【问题标题】:Apache rewrite regex specificApache重写正则表达式特定
【发布时间】:2013-06-13 20:26:56
【问题描述】:

我正在尝试重定向如下所示的 URL: http://getdotastats.com/sig/28755155.png

对于一个看起来像这样的人: http://getdotastats.com/sig/?aid=28755155

第一个 URL 是不存在的虚构 URL。

我想出的正则表达式如下。你能看看如何改进它。我缺乏形成正则表达式的必要知识,所以我只是让它匹配组,并忽略我不需要的那些。

RewriteEngine On
RewriteBase /
RewriteRule ^(.*)sig/(.*)\.(.*)$ index.php?aid=$2 [NC,L]

我可以将上述内容放在特定目录 (/sigs) 中的 .htaccess 中,还是主 vhost 文件中需要额外的指令?

感谢您的帮助!

编辑:感谢futuretelmatics。使用下面的 .htaccess:

RewriteEngine On
RewriteBase /
RewriteRule testpage\.html http://www.google.com [R]
RewriteRule ^/sig/([0-9]+\.(?:gif|png|jpg))$ index.php?aid=$1 [NC,L]

testpage重定向到google,但是图片重定向抛出如下错误。

The requested URL /sig/28755155.png was not found on this server.

我们必须靠近。 _

Vhost 看起来像:

    DocumentRoot /home/www-dota2
    <Directory /home/www-dota2/>
            Options Indexes MultiViews +SymLinksIfOwnerMatch
            AllowOverride All
            Order allow,deny
            allow from all
    </Directory>

【问题讨论】:

    标签: apache mod-rewrite dynamic-image-generation


    【解决方案1】:

    首先,我建议您编写更具体的正则表达式: 为了匹配 /sig/28755155.png,我会这样做:

    RewriteRule ^/sig/([0-9]+\.(?:gif|png|jpg))$ index.php?aid=$1 [NC,L]
    

    请记住,您的正则表达式 ^(.)sig/(.).(.*)$ 可以匹配像 /somesig/foo/bar/123.png 这样的路径强>

    回答您的问题:

    • 是的,您可以将此规则放在 sig 文件夹的 htaccess 文件中
    • 是的,sig 文件夹中 htaccess 中的规则是针对任何子文件夹计算的(ej:/sig/foo/bar)

    希望对你有帮助

    【讨论】:

    • 抱歉耽搁了。感谢您的正则表达式。我只需要弄清楚为什么它不起作用。它告诉我该文件不存在,这让我相信 mod_rewrite 配置不正确。
    • 似乎不是配置问题。 _ .htaccess 此处:pastebin.com/AkauwEM2 谷歌重定向有效,但图片无效。它告诉我“在此服务器上找不到请求的 URL /sig/28755155.png。”
    • 我认为正则表达式应该是: RewriteRule ^sig/([0-9]+)\.(?:gif|png|jpg)$ /sig/index.php?aid=$1 [ NC,L] ...不幸的是,这也不起作用。
    • 最后写了一个不同的正则表达式来让它工作。不过感谢您的帮助! pastebin.com/kbvqMUXk
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-15
    • 2011-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-09
    • 2016-02-10
    相关资源
    最近更新 更多