#mod-rewrite
#переписать мод
Вопрос:
Я пытаюсь настроить файл .htaccess на своей веб-странице, чтобы он работал так, как я хочу, но после долгих поисков и попыток понять документацию моя голова просто запуталась в этих mod_rewrite.
Это выглядит так:
root/index.php
root/application/-вложенные папки-
root/config/-files-
root/библиотека/-файлы-
я хочу, чтобы все отправлялось на index.php файл в качестве параметра типа index.php?page= $i, поэтому я могу иметь ссылки типа www.mypage.com/foo/bar и мой index.php справляется с этим. ТАКЖЕ я хочу иметь www.mypage.com/js/filename должны быть отправлены во вложенную папку в приложении, например root/application/javascripts/filename.
Я просто не могу заставить это работать, попробовал другой ответ, который я нашел как здесь, так и в других местах.
.htaccess at теперь:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^/js/ application/javascripts/ [L]
RewriteRule ^/js/(.*)$ application/javascripts/$1 [L]
RewriteRule ^css/ application/css/ [L]
RewriteRule ^css/(.*)$ application/css/$1 [L]
RewriteRule ^images/ application/images/ [L]
RewriteRule ^images/(.*)$ application/images/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*$ index.php?page=$1 [NC]
</IfModule>
Комментарии:
1. Я думаю, вы не хотите [L] в конце каждого условия. После этого первое правило JS останавливается из-за [L], и вы хотите, чтобы оно переходило к следующему правилу.
2. Уверен, что 1-й RewriteRule может быть единственным, который оценивается.
3. Кажется, работает с ответом Tims, хотя значение с помощью $_GET[‘page’] пусто в php-скрипте
Ответ №1:
Это должно сделать это:
RewriteEngine on
RewriteRule ^js/(.*)$ application/javascripts/$1 [L]
RewriteRule ^css/(.*)$ application/css/$1 [L]
RewriteRule ^images/(.*)$ application/images/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?page=$1 [NC]
Комментарии:
1. это частично работает, хотя параметр в файле php кажется пустым, потому что, когда я делаю $_GET[‘страница’], ничего не печатается, не знаю, php это или перезапись?
2. Строка индекса предполагает, что вы передаете что-то в URL, например localhost/getMyFile , который будет преобразован в index.php?page=getMyFile . Я предполагаю, что просто доступ к localhost преобразуется в index.php?page= (ничего не передается в переменную).
3. Попробуйте
http://yoursite/testMyVariable
или что-то подобное, чтобы увидеть, что$_GET['page']
делает.4. он по-прежнему пуст, я загрузил страницу с помощью phpinfo() и обнаружил, что все равно могу получить доступ к переменной, но все равно должен работать с $_GET[‘page’], QUERY_STRING = page=(пустой), REQUEST_URI = /www/testVar, SCRIPT_NAME = /www/index.php
5. Заставил его работать с RewriteRule ^(.*)$ index.php?page= $ 1 [NC]