Помощь .htaccess и mod_rewrite - PullRequest
       2

Помощь .htaccess и mod_rewrite

2 голосов
/ 14 февраля 2010

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

http://example.com/index.php?id=14

В эту модель:

http://example.com/14/

Ответы [ 3 ]

1 голос
/ 14 февраля 2010

Поскольку я думаю, что вы скорее хотите переписать запросы на /<ID>/ внутренне на /index.php?id=<ID>, попробуйте следующее:

RewriteRule ^(\d+)/$ index.php?id=$1

Но если вы действительно хотите перенаправить запросы на /index.php?id=<ID> изнутри на /<ID>/:

RewriteCond %{QUERY_STRING} (^|&)id=(\d+)(&|$)
RewriteRule ^index\.php$ /%2/? [R]

А если вы хотите сохранить возможные другие аргументы URL:

RewriteCond %{QUERY_STRING} ^(([^&]*&+)*)id=(\d+)(&+(.*))?$
RewriteRule ^index\.php$ /%3/?%2%5 [R]
1 голос
/ 11 апреля 2012

Ваш код - единственный, сработавший, наконец, в моем файле .htaccess, однако у меня есть вторая строка запроса, и я не смог заставить ее работать. Мои ключи - это имя и имя. Как я могу получить

http://example.com/studio_details.php?id=123&name=Studio Wrox London

до

http://example.com/123/Studio Wrox London
(здесь, в частности, у меня может быть проблема, так как в именах из базы данных есть пробелы - это можно решить с помощью - или заставить работать с пробелом нормально?)

  1. Ниже приведено то, что у меня есть в файле .htaccess, который находится на сервере общего хостинга от поставщика услуг. Как я могу добавить больше строк запроса к следующему?

RewriteCond% {QUERY_STRING} ^ (([^ &] & +) ) id = (\ d +) (& + (. *))? $ RewriteRule ^ studio_details.php $ /% 3 /?% 2% 5 [R]

  1. Как я могу переписать все расширения .php, которые существуют на моем сайте, в .html? Поскольку ни один из переписываний не работал в mycase. (только выше в пункте 1)

  2. Даже если в моем файле .htaccess нет кода, я перенаправляю свой файл index.php в каталог хоста, например, «vhost \ sites \ syildiz \ www ...» и т. Д. убедитесь, что страница индекса - index.php (которая будет переписана в index.html)

  3. Есть ли правило, чтобы проверить, работает ли правило перед его выполнением? например, проверка выполнения файла и переменных строки запроса перед отображением страницы?

спасибо Сульс

1 голос
/ 14 февраля 2010
RewriteCond %{QUERY_STRING} id=(.+)
RewriteRule ^/index.php$ /%1/? [R]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...