【问题标题】:Apache mod_rewrite help on shared server共享服务器上的 Apache mod_rewrite 帮助
【发布时间】:2015-11-25 14:41:08
【问题描述】:

我正在使用具有多个域的共享托管服务器,并且我的主 .htaccess(在 public_html/ 目录内)将所有到服务器的流量重定向到我的主域(很好)。现在问题变成了我在主域上运行 Wordpress,子文件夹包含在 %{REQUEST_URI} 变量中。所以我的 .htaccess 代码:

RewriteRule .* https://%{HTTP_HOST}/index.php?%{REQUEST_URI} [L,R=301]

动作:

http://www.tonydiloreto.com/about/

到:

https://www.tonydiloreto.com/?/tonydiloreto/about/

(我把? 放在那里,这样我就可以看到变量中存储了什么)。我的问题是,如何在重写时使用正则表达式从%{REQUEST_URI} 变量中删除额外的 /tonydiloreto?如果这是 PHP,我会这样做:

$new_url = str_replace("/tonydiloreto", "", %{REQUEST_URI});

如果这有意义的话。如果你想看看我在说什么,现在就去我的网站 (tonydiloreto.com) 并在斜杠后面加上任何内容。

谢谢!

【问题讨论】:

    标签: php regex apache .htaccess mod-rewrite


    【解决方案1】:

    不太确定这里的问题是什么...您只需指定一个仅捕获部分 uri 的请求规则。有数以百万计的例子......

    RewriteEngine on
    RewriteRule ^/tonydiloreto/(.*)$ https://%{HTTP_HOST}/index.php?$1 [L,R=301]
    

    这显然是有记录的:http://httpd.apache.org/docs/current/mod/mod_rewrite.html

    注意:以上为主机配置版本。如果您确实必须使用.htaccess 样式文件,那么您必须从模式中删除前导斜杠(/),因为此类文件适用于相对URI。 .htaccess 样式文件是出了名的容易出错,难以调试并且真的会降低服务器速度。

    【讨论】:

    • 所以在这里感觉自己像个白痴,但做了一些谷歌搜索(真的很想在没有的情况下实现这一点)但找到了我正在寻找的模式:RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ @ 987654322@ [R=301,L] 与上面@arkascha 发布的内容非常相似,感谢您对此进行尝试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-15
    • 1970-01-01
    • 1970-01-01
    • 2016-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多