在 .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.0
为dir/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