htaccess чистый профиль ссылки - PullRequest
0 голосов
/ 26 января 2012

В данный момент я использую следующий код HTACCESS

RewriteEngine On

# Lose the www
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,NC,L]

# Clean profile URLs
RewriteRule ^([a-zA-Z0-9_-]+)(/?)$ profile.php?user=$1

Так что ссылки работают, когда я захожу на http://mysite.com/username, Я вижу профиль. Но я все еще могу использовать http://mysite.com/profile.php?user=username.

То, что я хочу, это то, что этот второй шаг направлен на короткую версию http://mysite.com/username.

Другая проблема состоит в том, что когда я перехожу на http://www.mysite.com/username,, он переписывает URL как http://mysite.com/profile.php?user=username.

Кроме того, как можно избежать этого для определенных папок, таких как папка с изображениями? Если я иду в папку с изображениями, я получаю http://mysite.com/images/?user=images

Кроме того, если после чистого URL-адреса есть косая черта, страница выглядит странно.

Ответы [ 2 ]

0 голосов
/ 27 января 2012

Вам необходимо добавить последнее действие в правило изменения URL. Я изменил свой код на следующее:

# Lose the www
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,NC,L]

# Exclude existing files from redirect
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.* - [L]

# Clean profile URLs
RewriteRule ^([^/]*)\/$ http://businessgame.be/$1 [R=301]
RewriteRule ^([^/]*)(/?)$ profile.php?user=$1

Кажется, это прекрасно работает.

0 голосов
/ 27 января 2012

Если сайт еще не запущен, я не буду беспокоиться о URL /profile.php?user=username.Поскольку люди должны будут знать, что есть php-файл с именами profile.php.Если вы никогда не создадите никаких ссылок в html напрямую на profile.php, никто не узнает.

Если сайт уже работает, сообщите нам.

Что касается проблемы с изображениями.

RewriteCond $1 !^images/
RewriteRule ^([a-zA-Z0-9_-]+)(/?)$ profile.php?user=$1

, чтобы также создать папку css и / или js

RewriteCond $1 !^(images|css|js)/
RewriteRule ^([a-zA-Z0-9_-]+)(/?)$ profile.php?user=$1

Последняя проблема косой черты, скорее всего, связана с использованием относительных URL в вашем html.Попробуйте заменить href="path/resource.ext" на href="/path/resource.ext".То же самое для src="..." и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...