Как удалить часть URl-адреса.реврайт?

В настоящее время у меня есть 20+ URLs на моем сайте в этом формате

http://www.example.net/content/index/mission

Я хочу удалить / content / index из всех URL-адресов, поэтому они должны выглядеть примерно так

http://www.example.net/mission

другими словами, Я бы всегда удалял / content / index из url. Я уверен, что это действительно прямолинейно, но я не очень опытен с Apache.

4 ответов


вам понадобится модуль перезаписи Apache:mod_rewrite.

затем сделать что-то вроде этого:

RewriteEngine on 
RewriteRule ^content/index/(.*)$ 

вот официальная документация mod_rewrite:клик


Я думаю, у вас уже есть некоторые правила перезаписи для URL-адреса, как http://www.example.net/content/index/mission

вам нужно найти эти правила и добавить новый, который использует аналогичную структуру, но "жесткие коды" частей контента/индекса, например, предположим, что существующий был

RewriteRule ^content/(.*)/(.*)$ /content.php?param1=&param2= [L,qsa]

вы хотели бы сделать новое правило, чтобы забрать / миссия и переписать его аналогичным образом, но до существующее правило срабатывает, например,

RewriteRule ^mission$ /content.php?param1=index&param2=mission [L,qsa]
RewriteRule ^content/(.*)/(.*)$ /content.php?param1=&param2= [L,qsa]

это всего лишь примеры - это действительно будет зависеть от того, каковы ваши существующие правила.


  # Get rid of index.php
  RewriteCond %{REQUEST_URI} /index\.php
  RewriteRule (.*) index.php?rewrite=2 [L,QSA]

  # Rewrite all directory-looking urls
  RewriteCond %{REQUEST_URI} /$
  RewriteRule (.*) index.php?rewrite=1 [L,QSA]

или просто добавить индекс.html в зависимости от любого расширения, которое вы хотите удалить, и MOD_REWRITE требуется на Apache для этого. Спасибо.


У меня также есть сценарий, который я написал, что вы положили на свой сервер, а затем перейдите к нему через интернет-браузер, и он может подтвердить, есть ли у вас mod_rewrite на вашем сервере. То, как я показал вам, работает на 100%, пока mod_rewrite включен