Как сделать виртуальную папку в .htaccess - PullRequest
0 голосов
/ 19 июля 2011

Я получил этот код для имен пользователей, таких как mysite.com/username

Options +FollowSymLinks

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ profile.php?user=$1
  • Мои пользователи могут отправлять сообщения.И мой файл для сообщений - topic.php, который также находится в корневом каталоге.Если я переписываю topic.php, код думает, что это имя пользователя.Мне нужна папка вроде mysite.com/watch/topic.php, но я хочу сделать так, чтобы папка не существовала (виртуально), но я могу получить доступ к темам через этот URL.мой плохой английский.спасибо.

1 Ответ

1 голос
/ 19 июля 2011

Попробуйте это:

Options +FollowSymLinks
RewriteEngine On

RewriteRule ^watch/(.+)/?$ $1 [NC,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ profile.php?user=$1

Он перезапишет все запросы файлов в вашей «виртуальной директории» (watch) на файлы в вашей корневой папке.Буква «L» за правилом гарантирует, что это будет последняя перезапись запроса.

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

. Примечание: я думаю, вам следует изменить запрос профиля на что-то вроде

RewriteRule ^user/([a-z0-9-_]+)/?$ profile.php?user=$1 [NC,L]

., но в будущем, когда вы попытаетесь реализовать больше переписываний, это позволит вам определить, что на самом деле запрашивает пользователь.

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