mod_rewrite для перенаправления /index.whither, чтобы / не работает - PullRequest
0 голосов
/ 12 сентября 2009

Я хочу перенаправить все запросы для index.html | php | php5 на http://www.domain.co.uk/, используя mod_rewrite, и я скопировал код из книги по поисковой оптимизации с использованием дословного PHP, затем добавил в опцию php5 , но это не работает. Это мой полный файл .htaccess:

RewriteEngine On

#translate any .html ending into .php5
RewriteRule ^(.*)\.html$ /$1\.php5

RewriteCond %{THE_REQUEST} ^GET\ .*/index\.(php5|php|html)\HTTP
RewriteRule ^(.*)index\.(php5|php|html)$ /$1 [R=301,L]

#change / for ?
RewriteRule ^(.*)\.html/(.*)$ /$1\.html?$2

#strip .html from search res page
RewriteRule ^(.*)search/(.*)$ /$1search_results\.html/search=$2

#translate product details link from search res page
RewriteRule ^products/(.*)/(.*)/(.*)$ /product_details.php5?category=$1&title=$2&id=$3 [L]

#Translate products/psorisis/chamomile-skin-cream-P[x] to productview.php5?id=1
RewriteRule ^products/.*-P([0-9]+) /productview.php5?id=$1 [L]

Я не знаю, что с этим не так, а остальное работает отлично и денди. У кого-нибудь есть мысли?

1 Ответ

2 голосов
/ 12 сентября 2009

Я думаю, это потому, что ваш RerwriteCond заканчивается на \HTTP.

Измените его на:

RewriteCond %{THE_REQUEST} ^GET\ .*/index\.(php5|php|html)
RewriteRule ^(.*)index\.(php5|php|html)$ /$1 [R=301,L]

Если вы хотите сопоставить HTTP с THE_REQUEST, тогда поставьте пробел

RewriteCond %{THE_REQUEST} ^GET\ .*/index\.(php5|php|html)\ HTTP
RewriteRule ^(.*)index\.(php5|php|html)$ /$1 [R=301,L]
...