Перенаправить весь трафик в index.php, используя mod_rewrite - PullRequest
8 голосов
/ 22 декабря 2011

Я пытаюсь создать сокращение URL, и я хочу иметь возможность принимать любые символы сразу после домена и передавать их в качестве переменной URL.Так, например,

станет

Вот что у меня есть для mod_rewrite прямо сейчас, но я продолжаю получать 400 плохих запросов:

RewriteEngine on  
RewriteCond %{REQUEST_FILENAME} !-f  
RewriteCond %{REQUEST_FILENAME} !-d  
RewriteRule ^(.*) index.php?url=$1 [L,QSA]  

Ответы [ 5 ]

11 голосов
/ 22 декабря 2011

Попробуйте заменить ^(.*) на ^(.*)$

RewriteRule ^(.*)$ index.php?url=$1 [L,QSA]

Редактировать: Попробуйте заменить index.php на /index.php

RewriteRule ^(.*)$ /index.php?url=$1 [L,QSA]
1 голос
/ 29 июня 2016

Чтобы переписать все запросы на /index.php, вы можете использовать:

RewriteEngine on


RewriteCond %{REQUEST_URI} !^/index.php$
RewriteRule ^(.+)$ /index.php?url=$1 [NC,L]

RewriteCondition RewriteCond %{REQUEST_URI} !^/index.php$ важно, поскольку оно исключает назначение перезаписи, в которое мы переписываем, и предотвращает ошибку бесконечного зацикливания.

1 голос
/ 21 декабря 2015

ByTheWay не забудьте включить переписывание модов, в apache на ubuntu

sudo a2enmod rewrite 

и затем перезапустите apache2

sudo /etc/init.d/apache2 restart

edit: это старый вопрос, который мне помог, но я потерял часы, тестируя мой файл apache2.conf с одной стороны и файл .htaccess с другой, и до сих пор не горит.

0 голосов
/ 31 октября 2015

Проверьте в модулях Apache и убедитесь, что модуль rewrite включен.У меня была похожая проблема, и она была решена путем включения модуля перезаписи.

0 голосов
/ 22 декабря 2011

Попробуйте, не используя RewriteCond.

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