mod_rewrite - ошибка с 2 переменными - PullRequest
1 голос
/ 17 августа 2011

просто быстро, я использую это правило, и оно отлично работает:

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

, поэтому все, что попадет на mysite.com/anything, будет читаться как mysite.com/profile.php?id= что-нибудь. Это все хорошо.

Затем мне нужно добавить еще одну переменную, чтобы я использовал:

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

Какой тип работает, но он не загружает никакой CSS, JS, внешний PHP... Я думаю, именно поэтому он ищет в другой папке, я не знаю, как сказать, чтобы получить эти другие файлы из корневой папки.

Есть идеи?

Ответы [ 3 ]

2 голосов
/ 17 августа 2011

Это потому, что вы создаете виртуальные папки с помощью htaccess.Если вы хотите правильно загрузить CSS и JS, либо используйте абсолютные пути , либо добавьте .. / перед вашим относительным путем (что означает "на одну папку вверх").

Другая возможность - добавить <base href="www.example.com">.Это приведет к тому, что все новые запросы (для изображений, внешних файлов и т. Д.) Будут относиться к этому пути, а не к текущему адресу.

1 голос
/ 17 августа 2011

Добавьте следующие 2 строки перед RewriteRule

RewriteCond %{REQUEST_FILENAME} !-f [NC]
RewriteCond %{REQUEST_FILENAME} !-d [NC]
1 голос
/ 17 августа 2011

Вы можете добавить

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

чтобы не переписывать URL, если есть файлы с этим URL

...