2016-06-01 3 views
1

На самом деле, я работаю над небольшим PHP-скриптом. Я создал несколько правил для перенаправления nonwww на WWW-версию здесь мой код:перенаправление без www на www и rewriterule

RewriteEngine On 
RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 
RewriteRule app-([0-9]+)\.html app.html?id=$1 [L,QSA] 
AddType application/x-httpd-php5 .html .htm 

Он отлично работает при перенаправлении на домашней странице, но когда я хочу, чтобы перенаправить site.com/app-9.html для примера просто перенаправить к следующей версии: www.site.com/app.html?id=9. Он должен перенаправить site.com/app-9.html на сайт www.site.com/app-9.html. Как я могу достичь этого, пожалуйста?

проход:

site.com/app-9.html

текущий результат:

www.site.com/app.html?id=9

искомый результат:

www.site.com/app-9.html

+1

почему вы добавляете 'RewriteRule приложение - ([0-9] +) \ HTML app.html ID = $ 1 [L, QSA]', если не требуется. –

+0

@RohitGoyani Пожалуйста, проверьте обновленную версию! –

+0

Вы должны удалить приложение RewriteRule - ([0-9] +) \. Html app.html? Id = $ 1 [L, QSA] ', если это не требуется. После этого работала нормально. –

ответ

1

Добавлена ​​проверка только на app-9.html, для этого требуется специальное правило.

Используйте это:.?

RewriteEngine On 

RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 

## added validation for app-9.html only 
RewriteCond %{REQUEST_FILENAME} !app-9.html -f 
RewriteRule app-([0-9]+)\.html app.html?id=$1 [L,QSA] 

AddType application/x-httpd-php5 .html .htm 
0

Вы можете вставить

RewriteRule ^/страницы/страницы?

в ваше правило перезаписи? Это полностью удалит строку запроса.

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