htaccess Rewrite (删除 php 扩展)


htaccess Rewrite (remove php extension)

今天我的.htaccess文件有问题。在我的服务器上,我有几个文件夹,每个文件夹都是单独的网站示例:

服务器结构(全局文件夹)

- my_portfolio
- website_two
- my_website
- example

在"示例"文件夹中,我有那个.htaccess文件:

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}'s([^.]+)'.php [NC]
RewriteRule ^ %1 [R,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ /$1.php [L]
#To remove www header
RewriteCond %{HTTP_HOST} ^www'.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [L,R=301]

当我打开我的网站地址时,RewriteRule 工作良好,没有"www",.php扩展是不可见的,但是当我单击菜单中指向其他网站的链接时,我得到如下内容:www.example.com/example/contact。

我的网站的地址是 www.example.com,这个网站的所有内容都在服务器上的示例文件夹中。我不知道我写错了什么或写错了什么。当我尝试继续另一个Webside重写引擎时,总是给我一个没有扩展名的链接.php但在链接之前添加到文件夹名称。

这是一个很好的例子:

www.example.com/contact.php - normal link without htaccess
example.com/example(folder name where is a website)/contact - now
example.com/contact - should be

重新排序规则并将重定向规则保留在内部路由规则之前:

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
#To remove www header
RewriteCond %{HTTP_HOST} ^www'.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [L,R=301,NE]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}'s([^.]+)'.php [NC]
RewriteRule ^ %1 [R,L,NE]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ $1.php [L]

还要从新浏览器进行测试,以避免旧的 301 缓存。