我的网站中有许多目录,例如test
,所以当我使用domain.com/test
打开我的网站时,它会给我domain.com/test/
我希望删除最后一个斜杠< /强>
我还想删除扩展名,以便在我打开page.php
这样的页面时
它给了我domain.com/page
此外,我想将所有错误页面发送到domain.com/error404
我确实已将非http
的代码添加到https
这是我目前的尝试:
RewriteEngine On
RewriteBase /
Options All -Indexes
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.domain.com/$1 [R,L]
ErrorDocument 403 /www.domain.com/error404.php
ErrorDocument 404 /https://www.domain.com/error404.php
https工作正常但我也想删除最后一个斜杠和扩展并处理当前不起作用的错误页面。
答案 0 :(得分:0)
您可以使用以下命令转换目录斜杠:
DirectorySlash Off
或者您可以删除该跟踪斜杠:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+?)/$ /$1 [R=302,NE,L]
并重定向错误可以是:
ErrorDocument 404 /path/to/error404
答案 1 :(得分:0)
您可以在站点根目录中使用这些规则.htaccess:
ErrorDocument 403 /error404.php
ErrorDocument 404 /error404.php
RewriteEngine On
# redirect to https
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{SERVER_PORT} 80
RewriteRule ^ https://www.domain.com%{REQUEST_URI} [R=301,L,NE]
# remove index.php
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{THE_REQUEST} /index\.php [NC]
RewriteCond %{REQUEST_URI} ^(.*/)index\.php$ [NC]
RewriteRule ^ %1 [L,R=301,NE]
# To externally redirect /dir/file.php to /dir/file
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{THE_REQUEST} \s/+(.+?)\.php[\s?] [NC]
RewriteRule ^ /%1 [R=301,NE,L]
# To internally forward /dir/file to /dir/file.php
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.+?)/?$ $1.php [L]