ANi*_*sus 0 apache .htaccess mod-rewrite apache2
我在Win7机器上使用安装在C:上的Zend Server CE(v.5.1.0).我添加了一个项目到httpd.conf:
Alias /project "D:\Homepages\project"
<Directory "D:\Homepages\project">
Options Indexes FollowSymLinks
AllowOverride all
Order allow,deny
Allow from all
</Directory>
Run Code Online (Sandbox Code Playgroud)
我的.htaccess在文件项目目录包含以下内容:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_URI} ^/\w*\.(css|js) [NC]
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
Run Code Online (Sandbox Code Playgroud)
现在到了问题; 如果我去
一切似乎都很好.我到达index.php文件并获取我的内容.但是,如果我转到任何其他会触发RewriteRule的页面,它似乎是添加目录路径.FireFox输出以下未找到消息:
在此服务器上找不到请求的URL /Homepages/project/index.php.
我试图在这里找到类似的问题/答案,但失败了.任何的想法?PS.我接受答案的时间可能会延迟,因为我会在差事上退出一段时间.
小智 6
您需要设置RewriteBase指令; 否则,mod_rewrite会自动执行,并且默认情况下会将文件路径添加到生成的重写规则中.
来自:http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html
当新URL发生替换时,该模块必须将URL重新注入服务器处理.为了能够做到这一点,它需要知道相应的URL前缀或URL基是什么.默认情况下,此前缀是相应的文件路径本身.但是,对于大多数网站而言,URL与物理文件名路径没有直接关系,因此这种假设通常是错误的!因此,您可以使用RewriteBase指令指定正确的URL前缀.如果您的Web服务器的URL与物理文件路径没有直接关系,则需要在要使用RewriteRule指令的每个.htaccess文件中使用RewriteBase.
归档时间: |
|
查看次数: |
3126 次 |
最近记录: |