Php 重写规则';文件夹';如果与原始页面名称匹配,则不起作用

Php 重写规则';文件夹';如果与原始页面名称匹配,则不起作用,php,.htaccess,mod-rewrite,url-rewriting,Php,.htaccess,Mod Rewrite,Url Rewriting,我正在为新闻文章和事件详细信息向htaccess文件中添加一些重写规则,以便将标题嵌入到url中,但当我将“文件夹”名称设置为与原始页面相同时,它就不起作用了。 当“文件夹”名称不同时,它可以正常工作 工作htaccess文件如下所示 RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f # Rewrite for eventdetail.php?EventID=1&EventName=even

我正在为新闻文章和事件详细信息向htaccess文件中添加一些重写规则,以便将标题嵌入到url中,但当我将“文件夹”名称设置为与原始页面相同时,它就不起作用了。 当“文件夹”名称不同时,它可以正常工作

工作htaccess文件如下所示

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f


# Rewrite for eventdetail.php?EventID=1&EventName=event-name
RewriteRule ^event/([0-9]+)*$ eventdetail.php?EventID=$1 [NC,L]
RewriteRule ^event/([0-9]+)/([0-9a-zA-Z_-]+)*$ eventdetail.php?EventID=$1&EventName=$2 [NC,L]
例如,如果我使用^event/

我的url是sitename/event/id/eventname,它可以正常工作

但是如果我使用^eventdetail/


我的url是sitename/eventdetail/id/eventname,但此操作失败,事件id的get参数未传递

您应该以稍微不同的方式重写规则以处理这两个规则。问题的一部分可能是关于为什么不能使用文件名的多视图。把它关掉。此外,我也会使尾部斜杠可选

Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]

# Rewrite for eventdetail.php?EventID=1&EventName=event-name
RewriteRule ^event/([0-9]+)/([0-9a-zA-Z_-]+)/?$ eventdetail.php?EventID=$1&EventName=$2 [NC,L]
RewriteRule ^event/([0-9]+)/?$ eventdetail.php?EventID=$1 [NC,L]

没问题。如果答案对你有帮助,请接受。