Я использую .htaccess для управления чистыми URL-адресами, но по некоторым причинам в некоторых случаях я получаю ошибку Apache 404 Not Found.
Если пользователь переходит на http://domain.com/profile/, все в порядке.
http://domain.com/profile/
Если пользователь перейдет на 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]
Вы можете перенаправить 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]
Правило переписывания, которое вы написали, требует одной косой черты '/'.Попробуйте вместо этого:
RewriteRule ^([^/]*)(/([^/]*))?$ /index.php?page=$1&cmd=$3 [L]
Попробуйте это:
<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>