2013-10-07 3 views
2

Я думаю, что я прочитал все, что могу о перезаписывании htaccess, и я все еще не могу сделать головы или хвосты того, что происходит. Я сделал сайт для работы, и все хорошо, за исключением того, что последний дизайнер сделал какой-то безумный php-материал, и все URL-адреса, которые он использовал, имеют? = P (pagename) Я хочу переписать их в (pagename) .php, а затем перенаправить их с помощью 301 Я могу получить 301 перенаправляет работы просто не могу понять, как переписать? р = (ИмяСтраницы) к (имя_страницы) .phphtaccess rewrite? P = (я не понимаю код)

ответ

2

Вы хотите быть соответствие с фактическими запросами, то внутренне переписать его обратно в строку запроса:

RewriteEngine On 

# 301 redirect to php file 
RewriteCond %{THE_REQUEST} \ /\?p=([^&\ ]+)&?([^\ ]*) 
RewriteRule^/%1.php?%2 [L,R=301] 

# internally rewrite to the query string 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)\.php$ /?p=$1 [L,QSA] 
+0

OMG спасибо так много я пытался сделать это в течение нескольких недель. – Zeeba

1

Вы должны проверить QUERY_STRING, а затем применить правило перезаписи

RewriteCond %{QUERY_STRING} ^p=(.*)$ 
RewriteRule ^(.*)$ http://mydomain.com/%1.php [R=301,L] 

в ^p=(.*)$ проверяет строку запроса, которая имеет только одну переменную p=pagename, вы должны изменить его, если будут какие-то другие переменные в строке запроса он как p=pagename&id=15 и т.д.

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