URL-адрес Apache Переписать на domain.com/custom_url_name - PullRequest
0 голосов
/ 23 сентября 2010

Используя Apache на сервере Red Hat, я пытаюсь переписать URL-адрес магазина участника на нашем веб-сайте:

domain.com/store.php?url=12345

до:

domain.com/12345

Используя эти правила, я смогу заставить его работать, если всегда буду помнить добавить косую черту:

Options -Indexes 
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^store/url/(.*)$ store.php?url=$1
RewriteRule ^(.*)/$ store.php?url=$1

domain.com / 12345 / works, но domain.com/12345 не работает.

Удаление косой черты в последней строке кода переписывания ломает много вещей. Есть ли способ заставить это работать как с этим слешем, так и без него?

Ответы [ 2 ]

0 голосов
/ 23 сентября 2010

Ваша попытка использовать ^(.*)$ не удалась, потому что это соответствует любому пути URL.Используйте более конкретный шаблон, чем .*, возможно \d+, чтобы разрешить только одну или несколько цифр:

RewriteRule ^(\d+)$ store.php?url=$1
0 голосов
/ 23 сентября 2010

Что если вы сделали косую черту необязательной ?Кроме того, вам, вероятно, нужно указать что-то более конкретное, чем (.*), потому что domain.com/a/b/c/d/e будет соответствовать.Вместо этого вы можете использовать отрицательный класс символов , чтобы указать все, кроме косой черты.

RewriteRule ^([^/]*)/?$ store.php?url=$1

В качестве альтернативы, если вы хотите захватывать только цифры, вы можете использовать \d сокращенный класс (который соответствует любой цифре) вместе с +, который указывает, что должна присутствовать хотя бы одна цифра:

RewriteRule ^(\d+)/?$ store.php?url=$1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...