Używam .htaccess do zarządzania czystymi adresami URL, ale z jakiegoś powodu w niektórych przypadkach pojawia się błąd 404 Not Found Apache.

Jeśli użytkownik przejdzie do http://domain.com/profile/, wszystko jest w porządku.

Jeśli użytkownik przejdzie do http://domain.com/profile, otrzyma błąd

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/([^/]*)$ /index.php?page=$1&cmd=$2 [L]
0
jane1980 26 lipiec 2011, 23:42

3 odpowiedzi

Najlepsza odpowiedź

Spróbuj tego:

<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>
0
Shef 26 lipiec 2011, 23:49

Możesz przekierować adres URL za pomocą adresu URL z końcowym ukośnikiem za pomocą przekierowania 301

Spróbuj wykonać następujące czynności wraz z warunkiem przepisania. Spowoduje to przekierowanie każdego żądania adresu URL na adres URL z końcowym ukośnikiem. były. http://domain.com/profile zostanie przekierowany na http://domena.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
Poomalairaj 26 lipiec 2011, 23:51

Napisana reguła przepisywania wymaga jednego ukośnika '/'. Spróbuj zamiast tego:

RewriteRule ^([^/]*)(/([^/]*))?$ /index.php?page=$1&cmd=$3 [L]
0
Tom Imrei 26 lipiec 2011, 23:53