URL переписывающий код для переписывания - PullRequest
1 голос
/ 30 апреля 2009

я работаю на сайте, который находится в php ..... я хочу переписать URL

e.g www.3idiots.co.in/stories.php?id=17

если я хочу переписать его как

www.3idiots.co.in/stories/17.html

Может ли кто-нибудь сказать мне код для этого в файле .htaccess?

Ответы [ 2 ]

3 голосов
/ 07 июня 2009

Я предполагаю, что вы используете Apache с mod_rewrite. Что-то вроде

RewriteEngine On
RewriteRule ^/stories/([0-9]+)\.html /stories.php?id=$1

должен сделать свое дело. Конечно, вам нужно убедиться, что RewriteRule разрешен в этом каталоге. См. эту вики-страницу для получения дополнительной информации.

0 голосов
/ 07 июня 2009

mod_rewrite может переписывать / перенаправлять только запрошенные URI, а не те, которые есть в ваших HTML-документах. Поэтому вы должны сначала убедиться, что ваше PHP-приложение печатает правильные URI, поэтому /stories/17.html вместо /stories.php?id=17.

После этого вы можете использовать правило, предложенное Хосе Базилио:

RewriteRule ^stories/([0-9]+)\.html$ stories.php?id=$1

Хотя перенаправление запросов /stories.php?id=17 извне на /stories/17.html и затем внутренне обратно на /stories.php?id=17 возможно, это не очень хорошая практика, так как это приведет к удвоению числа запросов. Но вот правило для этого:

RewriteCond %{THE_REQUEST} ^GET\ /stories\.php[?\s]
RewriteCond %{QUERY_STRING} ^(([^&]*&)*)id=([0-9]+)&*([^&].*)?$
RewriteRule ^stories\.php$ /stories/%3.html?%1%4 [L,R=301]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...