Я собираюсь реализовать решение переадресации «довольно переписать» через htaccess и mod_rewrite. То, что я хочу, чтобы достичь является следующее:mod_rewrite исключить несколько слов
example.com/test123 --> example.com/page.php?c=test123
Это легко сделать с помощью одного RewriteRule
:
RewriteRule ^(.*) page.php?c=$1 [L,NC]
Но я хочу, чтобы исключить некоторые URLs:
/
(I» у меня есть определенный index.php, который я не хочу переписывать)css/(.*)
images/(.*)
CMS/(.*)
js/(.*)
contact/(.*)
prijslijst/(.*)
werk/(.*)
Я пробовал некоторые регулярные выражения, но до сих пор с безрезультатно. Мне нужна помощь, чтобы убедиться, что перечисленные каталоги не переписываются, но любое другое ключевое слово переписывается.
Некоторые вещи, которые я пробовал:
следующие выдержки отменить любую перезапись:
Первый:
RewriteCond %{QUERY_STRING} "^!prijslijst/{0,1}(.*)"
RewriteCond %{QUERY_STRING} "^!werk/{0,1}(.*)"
RewriteCond %{QUERY_STRING} "^!js/{0,1}(.*)"
RewriteCond %{QUERY_STRING} "^!css/{0,1}(.*)"
RewriteCond %{QUERY_STRING} "^!CMS/{0,1}(.*)"
RewriteCond %{QUERY_STRING} "^!images/{0,1}(.*)"
RewriteCond %{QUERY_STRING} "^!contact/{0,1}(.*)"
RewriteRule ^(.*) page.php?c=$1 [L,NC]
Второй:
RewriteCond %{QUERY_STRING} "^!(prijslijst|werk|js|css|CMS|images|contact)/{0,1}(.*)"
RewriteRule ^(.*) page.php?c=$1 [L,NC]
Третий:
RewriteRule ^!(prijslijst|werk|js|css|CMS|images|contact)/{0,1}(.*) page.php?c=$1 [L,NC]
Незначительная регулировка верхней один в результате все переписываются, даже то, что я хотел бы исключить:
RewriteCond %{QUERY_STRING} "!prijslijst/{0,1}(.*)"
RewriteCond %{QUERY_STRING} "!werk/{0,1}(.*)"
RewriteCond %{QUERY_STRING} "!js/{0,1}(.*)"
RewriteCond %{QUERY_STRING} "!css/{0,1}(.*)"
RewriteCond %{QUERY_STRING} "!CMS/{0,1}(.*)"
RewriteCond %{QUERY_STRING} "!images/{0,1}(.*)"
RewriteCond %{QUERY_STRING} "!contact/{0,1}(.*)"
RewriteRule ^(.*) page.php?c=$1 [L,NC]
(^
был удалены с начала каждого второго параметра RewriteCond
)
EDIT
Я представил ответ на мой собственный, чтобы документировать окончательное решение. Ответ @ ndn оказал большое влияние, это дало мне толчок в правильном направлении. Большое спасибо!
Этот ответ сработал для меня. Благодаря! – Jeroen
С другой стороны, что-то еще не работает. Это '/ $', который еще не соблюдается. Это означает, что 'example.com /' по-прежнему перенаправляется на example.com/page.php'. Все остальные исключаются, поэтому часть работает нормально (css, images и т. Д.). – Jeroen
@Jeroen, не могли бы вы попробовать заменить '/ $' на '/? $'? – ndn