首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正则表达式不起作用的Url重写

正则表达式不起作用的Url重写
EN

Stack Overflow用户
提问于 2016-05-07 19:10:12
回答 2查看 39关注 0票数 0

我的/etc/apache2/apache2.conf文件中有以下RewriteRule代码。

代码语言:javascript
复制
<Directory /var/www/html/demo/>
    # New URL Structure
    RewriteEngine On
    Allow From All
    RewriteBase /

    RewriteRule "^page/(([A-Za-z0-9\-]+/)*[A-Za-z0-9\-]+)/(.*)$" detail.php?url=$1 [L]
</Directory>

我有这个网址:http://example.com/page/parameter-1/parameter-2和RewriteRule是完美的工作,但当我尝试这个网址http://example.com/page/parameter-1,它不工作。

代码语言:javascript
复制
http://example.com/page/parameter-1 [Not working]
http://example.com/page/parameter-1/parameter-2 [Working]
http://example.com/page/parameter-1/parameter-2/parameter-3 [Working]

你知道我做错了什么吗?

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2016-05-07 19:17:23

这是因为您的正则表达式模式总是假设在page/之后总是有一个/

您可以将其简化为:

代码语言:javascript
复制
<Directory /var/www/html/demo/>
    # New URL Structure
    RewriteEngine On
    Allow From All
    RewriteBase /

    RewriteRule ^/?page/([a-z].*)$ detail.php?url=$1 [L,QSA,NC]

</Directory>
票数 1
EN

Stack Overflow用户

发布于 2016-05-07 19:19:01

好的,让我们分析一下正则表达式匹配的内容:

页面-你的网址必须以“^page/ /”开头,到目前为止一切正常。

(([A-Za-z0-9\-]+/)* -您的URL可以包含0个或更多段。

[A-Za-z0-9\-]+)/(.*)$ -您的网址必须以某个段结尾,后面跟着一个斜杠,后面跟任何东西

最后一部分是regex出了点问题。您的第一个示例在"page/“之后没有斜杠。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37087814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档