mod_rewrite, проблема 301
В настоящее время я могу получить доступ к конкретному сайту двумя способами:
1. http://a.com/foo/bar
2. http://a.com/index.php?url=foo/bar
То, что я пытаюсь достичь, - это разрешить делать это только первым способом и перенаправить 301 со второго на первый. Вот код, который я сделал до сих пор и поместил в.htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
#tricky part
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\?url=?(.*)\ HTTP/
RewriteRule ^index\.php$ http://a.com/$1 [R=301,L]
</IfModule>
В настоящее время он выполняет почти всю работу, перенаправляет index.php в /, но index.php? Url=foo/bar в /? Url=foo/bar, и мне не удается сделать это правильно. ТИА.
1 ответ
Попробуй это
RewriteCond %{query_string} ^url=(.*)$
RewriteRule ^.*index.php$ /$1? [R=301]