使用.htaccess清理网址时出现小错误

时间:2011-07-26 19:42:59

标签: php .htaccess mod-rewrite

我正在使用.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]

3 个答案:

答案 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]