htaccess mod_rewrite часть URL в переменную GET - PullRequest
3 голосов
/ 10 февраля 2012

У меня есть несколько таких URL:

Как я могу с помощью Apache mod_rewrite открыть следующие страницы?

Кроме того, будет ли работать это новое правило перезаписи с «перезаписью одной точки входа»?

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]

Спасибо.

Ответы [ 2 ]

3 голосов
/ 10 февраля 2012

Чтобы новое правило перезаписи работало с «перезаписью одной точки входа», добавьте свой rewriteRules следующим образом:

Флаг QSA является обязательным при добавленииновая строка запроса.

RewriteEngine On

RewriteRule ^(post)/([\w\d\-]+)/?$ $1/main?title=$2 [QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule . index.php [L]
  • Флаг QSA Apache Docs .
  • !-l проверяет, что запрошенный URIне символические чернила.
3 голосов
/ 10 февраля 2012

Вы можете использовать что-то подобное в вашем .htaccess:

RewriteRule ^post/(.*)$ post/main?title=$1 [L]

Вы должны соблюдать это правило ПРЕЖДЕ, чем одна точка входа переписывает правила. Если правило сработает, то переписать поиск правил будет завершено (так как указана опция [L])

Может потребоваться некоторая модификация путей, если вы хотите использовать эти правила в контексте VirtualHost

...