2014-01-04 3 views
0

Я переписывать все адреса и обсчитывать некоторые из них:Как обрабатывать оба/url и/url/redirects с htaccess?

RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_HOST} ^www\.(([^\.]+))\.pl [NC] 
RewriteRule ^(.*)$ http://%1.pl%{REQUEST_URI} [R=301,L] 
RewriteRule ^test$ test-page.php [R=301,L] 

так что example.pl/test перенаправляет example.pl/test-page.php

но example.pl/test/ перенаправляет example.pl/

в то время как он должен: example.pl/test/ перенаправляет example.pl/test-page.php

Как обрабатывать как /url, так и /url/ перенаправления?

Я предполагаю, что он имеет что-то с завершающей косой чертой.

ответ

1

Попробуйте это:

RewriteEngine On 
RewriteRule ^(.*)/$ http://%{HTTP_HOST}/$1 
RewriteRule ^test$ test-page.php [R=301,L] 

Испытано here.

+1

Wow cool one http://htaccess.madewithlove.be/ –

1

Вам нужно сделать трейлинг-косую позицию необязательной, используя /?$ regex. Воспользуйтесь следующими правилами:

RewriteEngine On 
RewriteBase/

RewriteCond %{HTTP_HOST} ^www\.([^.]+)\.pl [NC] 
RewriteRule^http://%1.pl%{REQUEST_URI} [R=301,L] 

RewriteRule ^test/?$ test-page.php [NC,R=301,L] 

Обязательно проверьте это в новом браузере, чтобы избежать проблем с кешированием 301.

+0

Что у меня больше переписывается? В то время как '/? $' Работает, я был бы доволен глобальным решением, а не правилом. –

+0

У вас может быть любое количество переписываемых. Дайте мне знать, какие конкретные URL вы хотите переписать? – anubhava

+0

Все запросы. –

Смежные вопросы