【问题标题】:PHP: .htaccess rewrite modulePHP:.htaccess 重写模块
【发布时间】:2013-10-27 06:51:02
【问题描述】:

我有一个页面

http://www.mydomain.com/test.php?A=a/b/c.png

在 .htacess 上我有一个代码

RewriteEngine On
RewriteRule ^A/([^/]*)$ /test.php?A=$1 [L]

如果我访问

http://www.mydomail.com/A/a/b/c.png

它不会让我查看文件,但此重写规则正在使用分隔符“-”

RewriteRule ^A-([^-]*)$ /test.php?A=$1 [L]

访问网址

http://www.mydomain.com/A-a/b/c.png

它有效,但我不想使用分隔符“-”我想使用分隔符“/”

【问题讨论】:

    标签: php regex apache .htaccess mod-rewrite


    【解决方案1】:

    它不起作用,因为您的正则表达式错误。您的 URI 中包含 / 并且 [^/] 匹配除斜杠之外的所有内容。

    把你的规则改成这个。

     RewriteRule ^A/([^.]*)$ /test.php?A=$1 [L,QSA]
    

    或者这个:

     RewriteRule ^A/(.+?)/?$ /test.php?A=$1 [L,QSA]
    

    【讨论】:

    • 谢谢你,这个真的很好用,非常感谢:D
    【解决方案2】:

    很简单

    原网址:

    http://www.mydomain.com/test.php?A=a/b/c.png

    改写后的网址:

    http://www.mydomain.com/A/a/b/c.png

    使用下面的 htaccess 代码

    RewriteEngine On
    RewriteRule ^A/([^/]*)$ /test.php?A=$1 [L]
    

    如果你想使用任何前缀,只需使用下面的代码

    RewriteEngine On
    RewriteRule ^([^/]*)\.php$ /test.php?A=$1 [L]
    

    --------------------------------------^ 随心所欲

    如果你想成为 'mydomain.com/images/a/b/c.png'

    RewriteEngine On
    RewriteRule ^([^/]*)$ /test.php?A=$1 [L]
    

    ----------^ // 从这里删除 A/

    【讨论】:

    • 如何在它前面加上一些前缀,就像我希望 url 是 'mydomain.com/images/a/b/c.png'
    • 我对您的代码感到困惑 >.
    • 查看最后几行.mydomain.com/images/a/b/c.png'
    • 我的意思是如何将“A/”更改为我想要的任何东西,比如我想将 A 替换为图像,这样我就可以将其访问到 mydomain.com/image/a/b/c.png 代码不起作用
    • RewriteRule ^A/([^/]*)$ /test.php?A=$1 [L] 不起作用它给我 404 错误
    猜你喜欢
    • 2015-02-01
    • 2013-11-15
    • 2015-06-30
    • 2018-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多