URL перезаписи .htaccess не работает с завершающим слешем? - PullRequest
0 голосов
/ 08 декабря 2011

Я хочу переписать URL страницы моего сайта.Это в принципе очень просто.Мой оригинальный URL выглядит следующим образом

http://www.mypage.com/website/page.php?slug=my-page

Я хочу, чтобы он выглядел следующим образом: http://wwww.mypage.com/website/my-page/

И это работает.Что нужно сделать, если убрать косую черту.Это мой htaccess:

RewriteEngine on
RewriteRule ^(.*)/$ page.php?slug=$1 [L]

Кажется, будто я удаляю косую черту, $ _GET ['slug'] становится только page.php, но с косой чертой переменная говорит "my-page".

Можно ли сделать так, чтобы ссылка работала как без, так и с косой чертой?

Редактировать: Имеет ли значение, если у меня есть.htaccess и php файл в дочерней папке?Итак, мой реальный URL-адрес выглядит так: http://www.mypage.com/website/page.php?slug=something

Я сейчас отредактировал пост с тем, как он есть на самом деле.

Ответы [ 3 ]

1 голос
/ 08 декабря 2011

Я могу подумать об использовании этой строки только до RewriteRule ^(.*)/$ page.php?slug=$1 [L]

RewriteRule ^(.*)$ page.php?slug=$1 [L]

По сути, в исходном коде вы объявили завершающий слеш, поэтому для него требуется завершающий слеш

1 голос
/ 08 декабря 2011

Попробуйте добавить это:

RewriteRule ^website/([a-z0-9]+)/?$ website/page.php?slug=$1      [NC,L,QSA]

При необходимости измените регулярное выражение в зависимости от типа URL, которые вы хотите принять.

Посмотрите, как работает htaccess с такими вещами, как строки запросов и т. Д .:

http://httpd.apache.org/docs/1.3/howto/htaccess.html

1 голос
/ 08 декабря 2011
RewriteEngine on
RewriteRule ^(.*)/?$ page.php?slug=$1 [L]

Знак вопроса делает косую черту необязательной. Я также предложил бы иметь только один вид URL. Как перенаправить URL-адреса без конечного salsh, на тот, который имеет.

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