的.htaccess重写子目录不工作
我的网络路径是: http://git.example.com/
(例如)的.htaccess重写子目录不工作
我的文档根目录是:
/home/user/git/
里面的文档根我有两个文件夹:
/home/user/git/john
/home/user/git/doe
这些文件夹分别代表john和doe的git仓库。它们托管在Web服务器上,以便代码可以在创建之前进行测试,然后再提交给主服务器。
我遇到的问题是,回购站点中的站点代码具有wordpress风格的.htaccess文件,以便脚本可以处理每个产品的数据库中指定的所有页面段落等。我有以下代码在我的/home/user/git/john
目录内的.htaccess文件:
RewriteEngine On
RewriteBase /john/
# FORCE BROWSER TO URL AND DO NOT ATTEMPT TO SLUG MATCH THESE
RewriteCond %{REQUEST_URI} ^/john/checkout/(.*)$ [OR]
RewriteCond %{REQUEST_URI} ^/john/admin/(.*)$ [OR]
RewriteRule ^.*$ - [L]
# ROUTE THROUGH CMS
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
我也试图改变rewritebase只是/
,我试图改变最后一行RewriteRule . /john/index.php
和其中的所有变化。没有我做的工作。
我的意思是不工作?那么说,我有网址http://git.example.com/john/some_product_name.html
- 我得到一个404未找到错误,并且Apache错误日志只有一个标准的404没有这样的文件的请求。而已。它就像“没有屎这个文件不存在......当它找不到时,你应该重写这个文件!”
无论如何,当所有操作都在根目录之外时,这个确切的脚本完美地工作,因为它在活动站点上,但是将副本移动到子目录一直是个问题。我可以为项目中的每个开发人员创建一个新的子域,然后从他们的doc_root中运行git,但真的......应该有一种方法可以使这项工作成为可能。我错过了什么?
另外 - 我可以确认重写没有发生,因为在我的index.php
文件的顶部,我有:echo "I'm here"; exit;
因此,而不是404未找到,我应该看到一个空白的白页,并显示消息“I在这里“。我不。
**更新**
我注释掉力通过线顶部这样,它现在的工作:
RewriteEngine On
RewriteBase /john/
# FORCE BROWSER TO URL AND DO NOT ATTEMPT TO SLUG MATCH THESE
#RewriteCond %{REQUEST_URI} ^/john/checkout/(.*)$ [OR]
#RewriteCond %{REQUEST_URI} ^/john/admin/(.*)$ [OR]
#RewriteRule ^.*$ - [L]
# ROUTE THROUGH CMS
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
世界为什么这些线路是造成这个问题?我访问的网址绝对不符合这两种模式!
在第1章删除最后一个[OR],如:
# FORCE BROWSER TO URL AND DO NOT ATTEMPT TO SLUG MATCH THESE
RewriteCond %{REQUEST_URI} ^/john/checkout/(.*)$ [OR]
# Don't use OR in next line.
RewriteCond %{REQUEST_URI} ^/john/admin/(.*)$
RewriteRule ^.*$ - [L]
为第1规则按预期运行删除最后一个[OR]。 – 2013-03-02 05:38:28
* facepalm *你可以回答这个问题,我可以接受吗? – SublymeRick 2013-03-03 05:19:22