Красивые URL профиля без конфликтов со страницами - PullRequest
1 голос
/ 18 июля 2010

Я хочу использовать URL профиля на моем сайте, например xyz.com/username

Я использую следующий код:

RewriteRule ^([a-zA-Z0-9_-]+)$  index.php?p=profile&u=$1 [L,QSA]

RewriteRule ^([a-zA-Z0-9_-]+)/$ index.php?p=profile&u=$1 [L,QSA]

Мой вопрос ... Как я могуиспользуйте его следующим образом и сохраняйте доступ к другим ссылкам, таким как xyz.com/forums, xyz.com/friends и т. д.

Спасибо.

Ответы [ 2 ]

1 голос
/ 18 июля 2010

Вы можете попробовать использовать условие:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9_-]+)/?$ index.php?p=profile&u=$1 [L,QSA]

-f и -d являются флагами для «является файлом» и «является каталогом» соответственно. ! отрицает это. Ваша перезапись должна происходить только для URL, которые на самом деле не существуют в вашем веб-корне. Возможно, вы захотите добавить начальное условие, чтобы оно соответствовало вашему формату имени пользователя, чтобы не топать каждую потенциальную ошибку 404.

Вы также можете добавить следующее:

RewriteCond %{REQUEST_URI} ^/[a-zA-Z0-9_-]+/?$

Так что вы будете соответствовать / adsfasdfasdf вместо / что-то / что / не существует

0 голосов
/ 18 июля 2010

Используйте это:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-zA-Z0-9_-]+)/?$ index.php?p=profile&u=$1 [L,QSA]

Он проверяет, является ли запрошенный файл каталогом или файлом, и, если нет, передает его в index.php

Вы также можете поставить ? после /, чтобы сделать его необязательным (объединяя два ваших правила).

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