在 .htaccess 中使用 Rewrite 而不是在 httpd.conf 中使用 Alias

Posted

技术标签:

【中文标题】在 .htaccess 中使用 Rewrite 而不是在 httpd.conf 中使用 Alias【英文标题】:Using Rewrite in .htaccess instead of Alias in httpd.conf 【发布时间】:2011-08-04 14:21:03 【问题描述】:

尝试在共享主机上设置我自己的 Weave 服务器,显然我无法修改 httpd.conf 文件,因此我尝试使用 Rewrite 模块和 .htaccess 找到解决方法。

根据https://wiki.mozilla.org/Labs/Weave/Sync/1.1/Setup 和https://wiki.mozilla.org/Labs/Weave/User/1.0/Setup 此处的文档,我创建了 .htaccess

RewriteEngine on
RewriteRule ^1.1(.*) server-sync/1.1/index.php/$1 [L]
RewriteRule ^1.0(.*) server-sync/1.0/index.php/$1 [L]
RewriteRule ^user/1.0(.*) weaveserver-registration/1.0/index.php/$1 [L]
RewriteRule ^user/1(.*) weaveserver-registration/1.0/index.php/$1 [L]

而不是

Alias /1.0 <full path to weave directory>/server-sync/1.1/index.php
Alias /1.1 <full path to weave directory>/server-sync/1.1/index.php
Alias /user/1.0 <full path to weave directory>/weaveserver-registration/1.0/index.php
Alias /user/1 <full path to weave directory>/weaveserver-registration/1.0/index.php

但我无法让它工作。当我在 Firefox 4 中将“http://www.mydomain.com/dir/weave”设置为同步 URL 时,我总是得到请输入有效的服务器 URL。 p>

这些重写规则是否正确?如果是这样,我可以探测 weave-server 配置设置:/ 我的托管脚本的目录结构:

/home/myname/www/dir/weave/.htaccess
/home/myname/www/dir/weave/server-sync > weave server scripts
/home/myname/www/dir/weave/weaveserver-registration > weave server user scripts

【问题讨论】:

【参考方案1】:

我不知道如何编织请求文件,但我想你可以测试一下:

RewriteRule ^1.1(.*) dir/weave/server-sync/1.1/index.php$1 [L]
RewriteRule ^1.0(.*) dir/weaveserver-sync/1.0/index.php$1 [L]
RewriteRule ^user/1.0(.*) dir/weaveweaveserver-registration/1.0/index.php$1 [L]
RewriteRule ^user/1(.*) dir/weaveweaveserver-registration/1.0/index.php$1 [L]

您的基本目录为/ = /home/myname/www/,您的规则应将请求重写为/1.0dir/weave/server-sync/1.0/index.php$1,其中$1/1.0 请求之后的任何内容。 (注意删除的斜线!或者您可能以双斜线结尾)。

【讨论】:

是的,我也不知道 Weave 文件请求结构,我已经在我的第一个代码中使用了它。我再次得到同样的错误。所以我认为我的重写代码应该没问题?

以上是关于在 .htaccess 中使用 Rewrite 而不是在 httpd.conf 中使用 Alias的主要内容,如果未能解决你的问题,请参考以下文章

使用 mod_rewrite 上一级方法配置 .htaccess

使用 .htaccess 和 mod_rewrite 强制 SSL/https

使用 htaccess 进行自动版本控制:htaccess regex Rewrite rule not pick up pattern

ifModule mod_rewrite 标记在 .htaccess mod_rewrite 文件中是不是多余

.htaccess Rewrite apache重写和配置

子域 mod_rewrite (htaccess) 到相对目录