2009-04-30 3 views
1

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

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

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

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

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

+0

Не совсем ответ, но ваш сайт выглядит ужасно на моем ноутбуке, с разрешением 1280x800 –

+0

эй Томалак его нормально Теперь – MAX

ответ

3

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

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

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

+2

Вы забыли один «/» после «истории»: RewriteRule ^/stories/([0-9] +) \. html /stories.php?id=$1 – slosd

+0

Вы совершенно правы, я исправил это сейчас. –

0

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]