Jak*_*fin 2 apache .htaccess mod-rewrite
我一直在玩我的.htaccess文件,到目前为止,它正在运行,但是有一些错误.
我正在尝试强制WWW前缀(只是根,而不是子域),同时删除.php扩展名并添加尾部斜杠.
码
# Force WWW prefix
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# Remove .php extension
RewriteCond %{THE_REQUEST} ^GET\ /[^?\s]+\.php
RewriteRule (.*)\.php$ /$1/ [L,R=301]
RewriteRule (.*)/$ $1.php [L]
# Force trailing slash
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule .*[^/]$ $0/ [L,R=301]
Run Code Online (Sandbox Code Playgroud)
它成功强制WWW,即使我删除它,.php扩展名被删除,即使我添加它,并且强制尾随斜杠,即使我删除它.但是,有时我得到404未找到错误,说在服务器上找不到请求的URL(通常以.php扩展名结尾),并且通常目录实际上不起作用. 编辑
通常目录实际上不起作用
意味着服务器抛出404错误,说"在此服务器上找不到/directory.php".
任何人都可以帮我一把吗?
在盲目附加php扩展之前,你需要检查你是否真的重写了一个php文件.所以这个规则:
RewriteRule (.*)/$ $1.php [L]
Run Code Online (Sandbox Code Playgroud)
需要一些条件:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/(.+)/$
RewriteCond %{DOCUMENT_ROOT}/%1.php -f
RewriteRule ^(.*)/$ $1.php [L]
Run Code Online (Sandbox Code Playgroud)
如果您检查TLD之前是否至少有1个主机,您还可以避免重定向以在子域的主机名中包含www,请尝试在前缀规则中添加另一个条件:
# Force WWW prefix
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} ^([^.]+)\.([a-z]{2,4})$ [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Run Code Online (Sandbox Code Playgroud)
编辑:
这是完整文件应该是什么样子:
RewriteBase /
# Force WWW prefix
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} ^([^.]+)\.([a-z]{2,4})$ [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# Remove .php extension
RewriteCond %{THE_REQUEST} ^GET\ /[^?\s]+\.php
RewriteRule (.*)\.php$ /$1/ [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/(.+)/$
RewriteCond %{DOCUMENT_ROOT}/%1.php -f
RewriteRule ^(.*)/$ $1.php [L]
# Force trailing slash
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule .*[^/]$ $0/ [L,R=301]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5283 次 |
| 最近记录: |