我有:
RewriteCond %{HTTP_HOST} ^my.domain.com$ [NC]
RewriteRule ^(.*)$ index.php?q=search&keyword=$1
输入:
my.domain.com/foo_bar
我想:
index.php?q=search&keyword=foo_bar
但事实上:
index.php?q=search&keyword=index.php
我不明白为什么。请帮帮我!
答案 0 :(得分:1)
您的重写规则实际上是重写两次,一次用于/foo_bar
,第二次用于index.php
,.*
匹配任何内容。
您只需要添加2个条件来停止重写文件和目录:
# handle landing page
RewriteCond %{HTTP_HOST} ^my\.domain\.com$ [NC]
RewriteRule ^/?$ index.php?q=search [L,QSA]
# handle /foo_bar
RewriteCond %{HTTP_HOST} ^my\.domain\.com$ [NC]
# If the request is not for a valid directory
RewriteCond %{REQUEST_FILENAME} !-d
# If the request is not for a valid file
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ index.php?q=search&keyword=$1 [L,QSA]