2012-06-19 6 views
1

Я переписываю URL-адрес профиля пользователя с помощью mod_rewrite следующим образом: domain.com/users/JohnSmith..htaccess mod_rewrite - зарезервированные имена папок

Я думал, может быть, было бы лучше пропустить папку для пользователей и просто поместить ее так: domain.com/JohnSmith.

Мой вопрос: Как мне это сделать и сохранить папки для системы и сайта? Если я буду искать domain.com/browsersupport, на странице profile.php будет проверяться имя и искать его в базе данных, и, поскольку у пользователя нет этого имени, страница не будет отображаться.

Я знаю, что это может быть исправлено с некоторыми операциями if в PHP-коде. Кроме того, имя папки должно быть зарезервировано, чтобы пользователи не могли зарегистрировать эти имена. Но для поиска профиля - есть ли более аккуратный способ? Возможно, чтобы исключить системные папки в файле .htaccess, поэтому profile.php не будет искать этого пользователя?

ответ

1

То есть, где эти 2 условия вступают в игру:

# if the request does NOT map to a file 
    RewriteCOnd %{REQUEST_FILENAME} !-f 
    # and the request does NOT map to a directory 
    RewriteCOnd %{REQUEST_FILENAME} !-d 
    # only THEN use this rewriterule 
    RewriteRulle ....etc... 

Если у вас есть как «динамических» страниц и динамических пользователей, то RewriteRule должен заканчиваться в процессе, который проверяет, является ли на странице, что name существует, и только если это не так, обратитесь к странице пользователя.

0
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule #insert user rewrite rule here 

Это будет применяться только правила перезаписи, если папка или файл с этим данным именем не существует (ваш вопрос, кажется, подразумевает, что browsersupport и тому подобное существуют в корне документа, как это).

Да, вам нужно проявлять осмотрительность в отношении того, чтобы пользователи знали, что они не могут зарегистрировать определенные имена. Если они это сделают, они не смогут получить доступ к своему имени пользователя по этому маршруту.

Я сделал это, но у меня есть правило, основанное на себе, которое, вероятно, не для всех, но работает для меня: имена пользователей должны быть как минимум 5 символов, а контроллеры - 4 или меньше.