我正在使用.htaccess来管理干净的URL,但由于某种原因,我在某些情况下得到了404 Not Found Apache错误。
如果用户前往http://domain.com/profile/
,一切都很好。
如果用户转到http://domain.com/profile
,则会收到错误
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/([^/]*)$ /index.php?page=$1&cmd=$2 [L]
答案 0 :(得分:0)
试试这个:
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine on
RewriteBase /
# /profile/cmd
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)$ /index.php?page=$1&cmd=$2 [L]
# /profile
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)$ /index.php?page=$1 [L]
</IfModule>
答案 1 :(得分:0)
您可以使用301重定向
将网址重定向到包含尾部斜杠的网址请尝试以下重写条件。这将使用尾部斜杠将任何url请求重定向到url。恩。 http://domain.com/profile将被重定向到http://domain.com/profile/
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !example.php
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://domain.com/$1/ [L,R=301]
答案 2 :(得分:0)
您编写的重写规则需要一个斜杠“/”。 试试这个:
RewriteRule ^([^/]*)(/([^/]*))?$ /index.php?page=$1&cmd=$3 [L]