Mod_rewrite - 将 .htaccess 更改为 httpd.conf 文件
Mod_rewrite - change .htaccess into httpd.conf file
我有以下 .htaccess 规则,从域中删除 url 中的 .php 扩展名。com/index。php 到域。com/index/工作正常
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteCond %{REQUEST_METHOD} !POST
RewriteRule ^ %1/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ .php [NC,L]
现在我想使用 httpd.conf 文件而不是 .htaccess,但是当我尝试将其重写为:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteCond %{REQUEST_METHOD} !POST
RewriteRule ^ %1/ [R=301,L]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME}.php -f
RewriteRule ^/(.*?)/?$ .php [NC,L]
url 被正确重写为域.com/index/,但服务器 returns 错误 404.
如果有任何帮助和建议,我会很高兴,可能有什么问题。
如果找到文件或目录,%{REQUEST_FILENAME}
已经是完整的文件系统路径,因此使用 %{DOCUMENT_ROOT}
作为前缀将生成无效路径。
您可以在 httpd.conf
中使用这些规则:
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteCond %{REQUEST_METHOD} !POST
RewriteRule ^ %1/ [R=301,NE,L]
RewriteCond %{DOCUMENT_ROOT}/ !-d
RewriteCond %{DOCUMENT_ROOT}/.php -f
RewriteRule ^/(.+?)/?$ /.php [L]
我有以下 .htaccess 规则,从域中删除 url 中的 .php 扩展名。com/index。php 到域。com/index/工作正常
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteCond %{REQUEST_METHOD} !POST
RewriteRule ^ %1/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ .php [NC,L]
现在我想使用 httpd.conf 文件而不是 .htaccess,但是当我尝试将其重写为:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteCond %{REQUEST_METHOD} !POST
RewriteRule ^ %1/ [R=301,L]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME}.php -f
RewriteRule ^/(.*?)/?$ .php [NC,L]
url 被正确重写为域.com/index/,但服务器 returns 错误 404.
如果有任何帮助和建议,我会很高兴,可能有什么问题。
%{REQUEST_FILENAME}
已经是完整的文件系统路径,因此使用 %{DOCUMENT_ROOT}
作为前缀将生成无效路径。
您可以在 httpd.conf
中使用这些规则:
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteCond %{REQUEST_METHOD} !POST
RewriteRule ^ %1/ [R=301,NE,L]
RewriteCond %{DOCUMENT_ROOT}/ !-d
RewriteCond %{DOCUMENT_ROOT}/.php -f
RewriteRule ^/(.+?)/?$ /.php [L]