httpd.conf mod_rewrite HTTPS 并删除 PHP 扩展
httpd.conf mod_rewrite HTTPS and remove PHP extension
我一直坚持这个。
我似乎无法 httpd.conf 重写 URL 以添加 https(如果它未被使用)并删除 .php 扩展名。
我可以工作,但不能同时工作。当 index.php 存在时,https://example.com/index 给出 404 错误。
所以我想做的是将 example.com/index.php 等 URL 转换为 https://example.com/index
如果我关闭强制 HTTPS 规则,它会起作用。
httpd.conf:
RewriteEngine On
RewriteRule ^(.*)$ .php [QSA]
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
RewriteRule $ https://example.com/ [L,R]
RewriteCond %{HTTP_USER_AGENT} libwww-perl.*
RewriteRule .* – [F,L]
我添加了多个规则,例如:
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME}.php -f
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [L]
并且:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(([A-Za-z0-9\-]+/)*[A-Za-z0-9\-]+)?$ .php
但是没有用。
任何帮助都会很棒。
这应该按预期工作。
为了你的http
块
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^/(.*)$ https://%{HTTP_HOST}/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/\.php -f
RewriteRule ^/(.*)$ /.php [L,QSA]
RewriteCond %{HTTP_USER_AGENT} libwww-perl
RewriteRule ^ – [F]
对于您的 https
(ssl) 块
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/\.php -f
RewriteRule ^/(.*)$ /.php [L,QSA]
RewriteCond %{HTTP_USER_AGENT} libwww-perl
RewriteRule ^ – [F]
注意:我建议您在根文件夹中使用 htaccess(ssl 文档根文件夹必须与 "http" 域相同)。这样,您将没有 split/duplicate 代码
我一直坚持这个。 我似乎无法 httpd.conf 重写 URL 以添加 https(如果它未被使用)并删除 .php 扩展名。 我可以工作,但不能同时工作。当 index.php 存在时,https://example.com/index 给出 404 错误。
所以我想做的是将 example.com/index.php 等 URL 转换为 https://example.com/index
如果我关闭强制 HTTPS 规则,它会起作用。
httpd.conf:
RewriteEngine On
RewriteRule ^(.*)$ .php [QSA]
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
RewriteRule $ https://example.com/ [L,R]
RewriteCond %{HTTP_USER_AGENT} libwww-perl.*
RewriteRule .* – [F,L]
我添加了多个规则,例如:
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME}.php -f
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [L]
并且:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(([A-Za-z0-9\-]+/)*[A-Za-z0-9\-]+)?$ .php
但是没有用。
任何帮助都会很棒。
这应该按预期工作。
为了你的http
块
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^/(.*)$ https://%{HTTP_HOST}/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/\.php -f
RewriteRule ^/(.*)$ /.php [L,QSA]
RewriteCond %{HTTP_USER_AGENT} libwww-perl
RewriteRule ^ – [F]
对于您的 https
(ssl) 块
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/\.php -f
RewriteRule ^/(.*)$ /.php [L,QSA]
RewriteCond %{HTTP_USER_AGENT} libwww-perl
RewriteRule ^ – [F]
注意:我建议您在根文件夹中使用 htaccess(ssl 文档根文件夹必须与 "http" 域相同)。这样,您将没有 split/duplicate 代码