Помощь по переписыванию профиля .htaccess - PullRequest
0 голосов
/ 09 октября 2010

RewriteRule ^user/(.*)/(.*) profile.php?user=$1&v=$2 [L] работает для http://10.0.1.5/user/Kevin/wall/

, если я делаю http://10.0.1.5/user/Kevin/wall это 404.если я делаю http://10.0.1.5/user/Kevin/ это 404, если я делаю http://10.0.1.5/user/Kevin это 404

Я устал

 RewriteRule ^user/(.*) profile.php?user=$1 [L]
    RewriteRule ^user/(.*) profile.php?user=$1 [L]
    RewriteRule ^user/(.*)/(.*)/ profile.php?user=$1&v=$2 [L]
    RewriteRule ^user/(.*)/(.*) profile.php?user=$1&v=$2 [L]

Но это не сработало, как я хотел.Я хочу, чтобы он работал со всеми 4 возможными URL.Что мне делать?

1 Ответ

1 голос
/ 09 октября 2010

Используйте более конкретный паттерн, чем .*, как [^/]+, и используйте /?$, чтобы сделать косую черту необязательной:

RewriteRule ^user/([^/]+)/?$ profile.php?user=$1 [L]
RewriteRule ^user/([^/]+)/([^/]+)/?$ profile.php?user=$1&v=$2 [L]

Но так как я рекомендую просто использовать один из форматов (с косой чертой или без нее), удалите или добавьте косую черту, если она присутствует или отсутствует:

# remove trailing slash
RewriteRule (.*)/$ /$1 [L,R=301]

# add trailing slash
RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} !-d
RewriteRule .*[^/]$ /$0/ [L,R=301]
...