可能是重复问题:
如何使用 .htaccess 删除 .php 文件扩展名
我试图隐藏掉 .php 文件的扩展名,但不知道为什么一直无法实现。我最新的尝试是:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^folder/([a-zA-Z_\-0-9]+)/?$ /folder/$1.php
</IfModule>
我已经尝试了很多从网上找到的不同代码变体,但仍然没有运气。 .htaccess 文件放置在根目录中。
可能是重复问题:
如何使用 .htaccess 删除 .php 文件扩展名
我试图隐藏掉 .php 文件的扩展名,但不知道为什么一直无法实现。我最新的尝试是:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^folder/([a-zA-Z_\-0-9]+)/?$ /folder/$1.php
</IfModule>
我已经尝试了很多从网上找到的不同代码变体,但仍然没有运气。 .htaccess 文件放置在根目录中。
我使用了这个:
RewriteEngine On
# Unless directory, remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/$ http://example.com/folder/$1 [R=301,L]
# Redirect external .php requests to extensionless URL
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ http://example.com/folder/$1 [R=301,L]
# Resolve .php file for extensionless PHP URLs
RewriteRule ^([^/.]+)$ $1.php [L]
另请参见:此问题
http://example.com/folder/$1
替换为 http://%{HTTP_HOST}/folder/$1
。 - Danny Becketthttp://192.168.1.2/blisscount/user/about.php
被重定向到了 http://192.168.1.2/blisscount/user/about
,但现在我收到了一个 404 错误
。 - ChristopherStrydom使用无扩展名的PHP脚本的另一种选项是
Options +MultiViews
甚至只需在目录中遵循.htaccess
文件:
DefaultType application/x-httpd-php
后者允许所有没有扩展名的文件名 script
被视为 PHP 脚本。虽然 MultiViews 会在提供基本名称时寻找替代方案,但这会造成性能影响。
1) 你确定 mod_rewrite
模块已启用吗?请检查 phpinfo()
。
2) 你上面的规则假设URL以“folder”开头。这正确吗?你实际上想在URL中有“folder”吗?这将匹配类似这样的URL:
/folder/thing -> /folder/thing.php
/thing -> /folder/thing.php
RewriteRule ^([^/\.]+)/?$ $1.php [L,QSA]
3)假设您在.htaccess文件中声明规则,那么您的安装是否允许在.htaccess文件中设置Options(AllowOverride)覆盖?一些共享主机不允许。
当服务器找到一个.htaccess文件时(如AccessFileName所指定),它需要知道该文件中声明的哪些指令可以覆盖较早的访问信息。