Перезапись URL с использованием mod_rewrite в .htaccess - PullRequest
0 голосов
/ 20 мая 2009

Я пытаюсь переписать URL, используя модуль apache mod_rewrite. Я пытаюсь использовать его, как показано ниже:

Options +FollowSymlinks
RewriteEngine on
RewriteBase /
RewriteRule ^wants/testing.htm wants.php?wantid=$1 [L]

Я создал файл .htaccess в каталоге, из которого осуществляется доступ к файлам.

Mod_rewrite также включен. После всего этого я так и не смог заставить его работать.

Может кто-нибудь помочь мне с этим? Пожалуйста, дайте мне знать, если я что-то упустил

Заранее спасибо, Gnanesh

Ответы [ 4 ]

2 голосов
/ 20 мая 2009

Согласно комментарию ОП:

URL показывает mydomain.com/wants.php?wantid=123. я нужно, чтобы это выглядело как mydomain.com/wants/123

Это должно работать для вашего случая:

RewriteEngine on
RewriteBase /
RewriteRule ^wants/([0-9]+)$ /wants.php?wantid=$1 [L]

Это позволит вам использовать http://yoursite.com/wants/123 и тихо перепишет его в want.php? Wantid = 123

0 голосов
/ 20 мая 2009

Если вы хотите использовать правило в файле .htaccess в каталоге хочет , вы должны удалить контекстную wants/ с начала шаблона. Так просто:

RewriteEngine on
RewriteRule ^([0-9]+)$ /wants.php?wantid=$1 [L]

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

RewriteEngine on
RewriteRule ^wants/([0-9]+)$ wants.php?wantid=$1 [L]
0 голосов
/ 20 мая 2009

Хм, поэтому я немного подумал, и я думаю, вы могли бы сделать что-то вроде этого (только если вы меня правильно поняли, регулярное выражение изменилось в соответствии с вашим комментарием):

Options +FollowSymlinks
RewriteEngine on
RewriteBase /
RewriteRule ^wants/\d+$ /wants.php?wantid=$1 [L]

Но я полагаю, что вы также можете не указывать $ 1 и по-прежнему иметь доступ к идентификатору в вашем wants.php. Так

RewriteRule ^wants/\d+$ /wants.php [L]

тоже должно работать, и вы можете использовать что-то вроде

<?php 
    $request = split('/', $_SERVER["REQUEST_URI"])[1];
?>

в вашем wants.php, где последним элементом массива будет ваш идентификатор (или все, что вы когда-нибудь решите переписать и отправить в сценарий).

0 голосов
/ 20 мая 2009

Я думаю, что косая черта (или, скорее, ее отсутствие) может быть вашей проблемой:

Options +FollowSymlinks
RewriteEngine on
RewriteBase /
RewriteRule ^wants/testing.htm /wants.php?wantid=$1 [L]

В противном случае Apache может искать файл PHP в /wants/wants.php, поскольку он будет относиться к нему как к относительному URL.

...