Apache mod_rewrite帮助共享服务器

时间:2015-11-25 14:41:09

标签: php regex apache .htaccess mod-rewrite

我正在使用具有多个域的共享托管服务器,而我的主.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)并在落后的斜线后放置任何内容。

谢谢!

1 个答案:

答案 0 :(得分:0)

不确定这里的问题是什么......您只需指定一个仅捕获部分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样式文件非常容易出错,难以调试,而且真的会降低服务器速度。