htaccess重写(删除php扩展)
今天我的.htaccess文件有问题。在我的服务器上,我有几个文件夹,每个文件夹分别位于以下网站示例中: 服务器结构全局文件夹htaccess重写(删除php扩展),php,apache,.htaccess,mod-rewrite,url-rewriting,Php,Apache,.htaccess,Mod Rewrite,Url Rewriting,今天我的.htaccess文件有问题。在我的服务器上,我有几个文件夹,每个文件夹分别位于以下网站示例中: 服务器结构全局文件夹 - my_portfolio - website_two - my_website - example 在示例文件夹中,我有一个.htaccess文件: Options +FollowSymLinks -MultiViews RewriteEngine On RewriteBase / RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s(
- 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]
当我打开我的网址时,重写规则运行良好,没有www,并且.php扩展是不可见的,但是当我单击菜单中指向其他网站的链接时,我得到如下结果:
www.example.com/example/contact
我的网站地址是www.example.com,该网站的所有内容都在服务器上的example文件夹中。我不知道我写错了什么地方。当我试图转到另一个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缓存。你好,anubhava,谢谢你的answear,但效果是一样的,我在新浏览器上检查此功能,为此我下载了firefox,仍然文件夹名称在链接中已过时我不知道为什么在VirtualHost设置中/example/未设置为DocumentRoot?我从提供程序获得了主机这不是我的本地主机或服务器。我的目录在服务器上看起来是:/public\u html/webisteone/index.php我没有访问VirtualHost设置的权限,我唯一能做的就是在htaccess中编写正确的代码,并将此文件放入websiteone目录。我在上面写的htaccess中的所有设置。