htacess URL перезаписывает имя пользователя в URL конфликтует с другими переписанными URL - PullRequest
0 голосов
/ 19 декабря 2011

Хорошо, я создаю сайт, на котором пользователь может создавать профили. Я хочу, чтобы профили пользователей были похожи на http://example.com/username, но проблема в том, что они конфликтуют с другими правилами.

RewriteEngine on
Options +FollowSymLinks
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule story/(.*)/ story.php?id=$1
RewriteRule story/(.*) story.php?id=$1

#Profiles:
RewriteRule (.*)/ profile.php?id=$1
RewriteRule (.*) profile.php?id=$1

Теперь, что происходит, когда я пытаюсь посетить http://example.com/story/hello_world Система думает, что «история» в URL-адресе - это имя пользователя, ищет его в базе данных, а затем выбрасывает страницу 404 (как и ожидалось) .

Мне не нужны пользовательские страницы, такие как example.com/user/username.

Пример: у Digg.com есть digg.com/story и digg.com/username

1 Ответ

0 голосов
/ 19 декабря 2011

Вы можете заменить оба ваших правила приведенным ниже правилом, чтобы предотвратить проблему, если http://example.com/story/hello_world интерпретируется как пользователь.

RewriteRule ^([^/])+/?$ profile.php?id=$1 [L]

Если у вас есть более конкретные правила для имени пользователя, например, имя пользователя буквенно-цифровое и длиной от 5 до 10 символов, тогда лучшим правилом будет

RewriteRule ^([a-zA-Z0-9]{5,10})/?$ profile.php?id=$1 [L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...