Я пытаюсь создать сократитель URL, и я хочу иметь возможность принимать любые символы сразу после домена и передавать их как переменный url. Так, например,
станет
Вот что я имею для mod_rewrite прямо сейчас, но я продолжаю получать 400 Bad Request:
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*) index.php?url=$1 [L,QSA]
Попробуйте заменить ^(.*)
^(.*)$
RewriteRule ^(.*)$ index.php?url=$1 [L,QSA]
Изменить: Попробуйте заменить index.php
на /index.php
RewriteRule ^(.*)$ /index.php?url=$1 [L,QSA]
ByTheWay не забудьте включить mod rewrite, в apache на ubuntu
sudo a2enmod rewrite
а затем перезапустите apache2
sudo /etc/init.d/apache2 restart
Редактирование: это старый вопрос, который помог мне, но я потерял часы, проверяя свой файл apache2.conf с одной стороны и файл .htaccess с другой стороны и все еще без света.
Попробуйте, не используя RewriteCond
.
Чтобы переписать все запросы в /index.php
, вы можете использовать:
RewriteEngine on RewriteCond %{REQUEST_URI} !^/index.php$ RewriteRule ^(.+)$ /index.php?url=$1 [NC,L]
RewriteCondition RewriteCond %{REQUEST_URI} !^/index.php$
важен, поскольку он исключает назначение переписывания, которое мы переписываем, и предотвращает бесконечную ошибку цикла.
Проверьте модули Apache и убедитесь, что модуль перезаписи включен. У меня была аналогичная проблема, и это было разрешено, включив модуль перезаписи.