Небольшая ошибка при использовании .htaccess для чистых URL - PullRequest
0 голосов
/ 26 июля 2011

Я использую .htaccess для управления чистыми URL-адресами, но по некоторым причинам в некоторых случаях я получаю ошибку Apache 404 Not Found.

Если пользователь переходит на 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 голосов
/ 26 июля 2011

Вы можете перенаправить URL с URL-адресом с косой чертой, используя 301 redirect

Попробуйте следующее вместе с вашим условием перезаписи. Это перенаправит любой 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] 
0 голосов
/ 26 июля 2011

Правило переписывания, которое вы написали, требует одной косой черты '/'.Попробуйте вместо этого:

RewriteRule ^([^/]*)(/([^/]*))?$ /index.php?page=$1&cmd=$3 [L]
0 голосов
/ 26 июля 2011

Попробуйте это:

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...