Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mod.rewrite同一目录下的多个规则_Php_Apache_Mod Rewrite - Fatal编程技术网

Php mod.rewrite同一目录下的多个规则

Php mod.rewrite同一目录下的多个规则,php,apache,mod-rewrite,Php,Apache,Mod Rewrite,我正在使用以下代码 #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.ph

我正在使用以下代码

#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
变量
eid

我还需要一个规则,将
www.website.com/spec.php?eid=00000
转换为
www.website.com/00000
www.website.com/spec/00000
,而不实际将
spec.php
移动到子目录中

任何帮助都将不胜感激,我的眼睛有谷歌烧伤。我发现有一些做了类似的事情,但当我试图将其与我的情况相匹配时,我遇到了问题。

所以这一行在这里

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停止

“将
www.website.com/index.php?q=Keyword
转换为
www.website.com/Keyword
”:应该是相反的,不是吗?