двойное перенаправление mod_rewrite

#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]