.htaccess RewriteRule не будет работать! - PullRequest
1 голос
/ 15 июня 2011

Я использую php-переключатель [_get] в моей системе меню для создания url.com/?p=page, и я бы хотел, чтобы это изменилось на url.com/page.html. Но я не могу заставить его работать, может быть, некоторые из вас знают правильные настройки для этого.

Я сейчас использую это как .htaccess:

RewriteEngine On
RewriteBase /
Options +FollowSymLinks
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
RewriteRule ^start(.*)\.html$ ?p=start$

Спасибо!

Обновление:

Я пытался с $1, но все равно URL: ?p=start, когда я хочу, чтобы оно было /start.html

Ответы [ 4 ]

2 голосов
/ 15 июня 2011

Похоже, вам не хватает $1 в вашем последнем правиле:

RewriteRule ^start(.*)\.html$ ?p=start$1
                                     ^^^^

РЕДАКТИРОВАТЬ После получения новой информации попробуйте:

RewriteCond %{QUERY_STRING} p=([a-z0-9]+) [NC]
RewriteRule . /%1.html [L]

Thisзахватывает параметр p= из строки запроса и использует его для перезаписи на page.html

1 голос
/ 15 июня 2011

вам нужно

RewriteCond %{QUERY_STRING} ^p=(.+)$ [NC]
RewriteRule ^$ /%1.html? [R=301,L]

R = 301 - изменить URL в браузере, но вам все равно нужно обновить все ссылки на сайте:

<a href="?p=start"> до <a href="/start.html">

Изменить: Попробуйте обновленный (он имеет? После html)

1 голос
/ 15 июня 2011

htaccess работает наоборот.

Это делает такие вещи, как /start.html прокси на ?p=start, но вы все равно должны сделать ссылки сами по себе /start.html.

Так что меняйтевсе от <a href="?p=start"> до <a href="/start.html">.

1 голос
/ 15 июня 2011

Попробуйте

RewriteRule ^start(.*)\.html$ ?p=start$1 [L]

См. Один (1) в конце.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...