.htaccess重写添加服务器目录

时间:2015-09-16 01:22:00

标签: apache .htaccess mod-rewrite url-rewriting

在我的网站上,如果我输入mydomain.org/services/service1,地址将被重写为“mydomain.org/services/home/username/public_html/services/service1/”。但是,如果我输入mydomain.org/services/service1/,它将转到正确的页面。

我的.htaccess文件如下:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*[^/])/?$ $1.php [L]
ErrorDocument 400 /404.php
ErrorDocument 401 /404.php
ErrorDocument 403 /404.php
ErrorDocument 404 /404.php
ErrorDocument 500 /404.php

我的目录如下:

\HOME
-\Username
--\public_html
---\css
---\code
---\services
---->service1.php
---->service2.php
---\img
---header.php
---index.php
---footer.php

奇怪的是,如果我输入没有尾部斜杠的mydomain.org/services/service2,页面会加载并附加一个尾部斜杠。

我的网站由Godaddy的VPS主持,如果相关的话。

我的问题是如何阻止我的网站将我的本地目录路径附加到网址?为什么会这样?

1 个答案:

答案 0 :(得分:0)

我发现问题是我的浏览器缓存了我的.htaccess的旧版本。清除我的浏览器缓存数据解决了这个问题。

我的.htaccess文件现在看起来像这样,万一有人偶然发现这个想知道如何删除文件扩展名并强制使用尾部斜杠。

#turn on rewrite engine
RewriteEngine On
RewriteBase /

#force trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*[^/])$ /$1/ [L,R=301]

#remove .php file extension
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*[^/])/?$ $1.php [L]