我正在使用以下代码......
#Fix Rewrite
Options -Multiviews
# Mod Rewrite
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)?$ index.php?q=$1 [L]
将www.website.com/index.php?q=Keyword
变为www.website.com/Keyword
哪个很好......但是......
我也(在同一目录中)有一个名为spec.php
的文件,该文件接受GET
的{{1}}变量。
我还需要一条将eid
转换为www.website.com/spec.php?eid=00000
或www.website.com/00000
的规则,而不会将www.website.com/spec/00000
移动到子目录中。
任何帮助都会非常感激,我的眼睛有谷歌烧伤。我找到了一些类似的东西,但是当我试图将它与我的情况相匹配时,我遇到了问题。
答案 0 :(得分:0)
这一行
RewriteRule ^(.*)?$ index.php?q=$1 [L]
匹配所有内容,如果您希望website.com/Keyword
工作且website.com/spec/0000
正常工作,那么您需要添加其他条件
我认为这会起作用
RewriteRule ^/spec/(.+)$ /spec.php?eid=$1 [L]
RewriteRule ^(.*)?$ /index.php?q=$1 [L]
这是什么意思?
第一部分是正则表达式,第二部分是映射它的URL,最后一部分是标志。在这个例子中,我们首先将/spec/
条件置于首先,因为第二个条件将与其他所有条件匹配,然后确保[L]
标志设置为告知mod_rewrite在当前条件下停止匹配。