【问题标题】:How can I add an additional word to a URL using mod_rewrite如何使用 mod_rewrite 向 URL 添加额外的单词
【发布时间】:2012-02-15 09:42:59
【问题描述】:

我有一个带有如下 URL 的应用程序:

https://www.domain.com/example/public/subscription
https://www.domain.com/example/public/subscription/source
https://www.domain.com/example/public/test/subscription

我想使用 mod_rewrite(或其他方法)通过删除 /public/ 部分来创建上述 URL 的较短“别名”,以便我可以为我的客户提供这些 URL 的较短版本:

https://www.domain.com/example/subscription
https://www.domain.com/example/subscription/source
https://www.domain.com/example/test/subscription

也就是说,当浏览到https://www.domain.com/example/subscription时,例如:

  • 服务器必须返回与直接打开https://www.domain.com/example/public/subscription 时相同的响应
  • 浏览器仍必须在地址栏中显示 URL 的较短版本(不带 /public/

这可能吗?这样的 RewriteRule 会是什么样子?

提前谢谢你。

【问题讨论】:

    标签: apache mod-rewrite url-rewriting


    【解决方案1】:

    将此.htaccess 文件放入您的DocumentRoot

    Options +FollowSymLinks -Indexes -MultiViews
    RewriteEngine on
    RewriteBase /
    
    RewriteRule ^(example)/(.*)$ $1/public/$2 [NC,L]
    

    【讨论】:

    • 我想我在这里遗漏了其他东西。该网站的 DocumentRoot 是 /var/www/domain/example,我的 .htaccess 文件位于 example/ 目录中。现在,我什至无法使用如下简单的规则:RewriteRule ^/(.*) http://www.google.com [R]。这应该将对https://www.domain.com/example/public/test/subscription 的请求重定向到Google,对吗?相反,我得到 404。
    • @Xhantar 如果您的DocumentRoot/var/www/domain/example,那么您的网址应如下所示:https://www.domain.com/public/test/subscription 而不是https://www.domain.com/example/public/test/subscription。对于此链接,https://www.domain.com/example/public/test/subscription 您的 httpd 服务器正在尝试访问 /var/www/domain/example//example/public/test/subscription
    • @ThinkinMonkey - 好吧,我现在看到了我的错误。我在实际的 RewriteRule 上处于正确的轨道上,但我的 DocumentRoot 设置的路径、产生的基本 URL 以及我的 .htaccess 文件的物理位置都是我不太了解的因素。现在解决并工作;非常感谢!
    【解决方案2】:

    您只想“删除”public 关键字?

    试试这个重写规则:

    RewriteRule ^/example/public/(.*) /example/$1 [L]
    

    【讨论】:

    • 实际上反过来(除非我自己弄糊涂了)。我想为我的客户提供较短的 URL,然后希望 mod_rewrite 添加 /public/ 部分,因为在调用没有 /public/ 的 URL 时应用程序将响应 404 Not Found 错误(假设不存在重写规则)。
    猜你喜欢
    • 1970-01-01
    • 2011-11-09
    • 2021-10-19
    • 2018-07-20
    • 1970-01-01
    • 1970-01-01
    • 2021-11-13
    • 2014-02-03
    • 1970-01-01
    相关资源
    最近更新 更多