【问题标题】:rewrite rule 'folder' does not work if matches original page name如果匹配原始页面名称,重写规则“文件夹”不起作用
【发布时间】:2015-11-11 15:58:54
【问题描述】:

我在我的 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/...

我的网址是站点名称/事件/id/事件名称,这可以正常工作,

但如果我使用 ^eventdetail/...

我的 url 是 sitename/eventdetail/id/eventname 失败,事件 id 的 get 参数没有传递

【问题讨论】:

    标签: php .htaccess mod-rewrite url-rewriting


    【解决方案1】:

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

    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]
    

    【讨论】:

    • 没问题。如果对您有帮助,请采纳答案。
    猜你喜欢
    • 2011-07-18
    • 2021-12-26
    • 2020-07-01
    • 1970-01-01
    • 2019-09-16
    • 2023-01-13
    • 2014-08-20
    • 1970-01-01
    • 2016-12-11
    相关资源
    最近更新 更多