2015-04-26 4 views
0

У меня есть эти URL-адреса:Удалить части URL mod_rewrite

mysite.com/index.php?id=que-ofrecemos 
mysite.com/index.php?id=quienes-somos 

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

mysite.com/que-ofrecemos 
mysite.com/quienes-somos 

На самом деле, я хочу, чтобы удалить index.php?id= только из URL-адресов, которые есть id комплект.

+0

Вы не понимаете, как работает mod_rewrite. Он не может удалять части с реального URL-адреса, чтобы создать красивый URL-адрес. Вместо этого вы должны написать правила, которые конвертируют симпатичный URL-адрес (который набирается посетителями вашего сайта) и добавляют или корректируют его в настоящий URL-адрес. Таким образом, для вас возникает вопрос: хотите ли вы, чтобы каждый запрос для mysite.com/something был изменен в фоновом режиме в запрос для mysite.com/index.php?id=something или есть исключения, которые нельзя переписывать, как это ? – Bobulous

+0

Есть исключения, я хочу быть «изменен в запрос», как вы говорите, только когда установлен «id =» – pedritoalfonso

+0

Но красивый URL-адрес, посланный посетителем, никогда не будет включать 'id =', поэтому нет правила, которое вы можете создайте, который может проверить это. Вместо этого вам нужно подумать о правилах, которые могут быть проверены на симпатичных URL-адресах, набранных пользователями. – Bobulous

ответ

0

Если вы хотите, чтобы ваш URL, чтобы выглядеть в браузере

mysite.com/que-ofrecemos 
mysite.com/quienes-somos 

Затем вам нужно использовать правило, как это. Это также перенаправит любой URL-адрес с строкой запроса id обратно на этот mysite.com/quienes-somos. Попробуйте эти правила.

RewriteEngine on 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php?id=([^&\ ]+) 
RewriteRule .* /%1? [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^/]+)/?$ /index.php?id=$1 [NC,L,QSA] 
Смежные вопросы