2011-12-21 2 views
8

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

станет

Вот что я для mod_rewrite прямо сейчас, но я постоянно получаю 400 Bad Request:

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

Обратите внимание на 'error.log' за действительную причину ошибки. В противном случае установите «RewriteLog' – mario

+1

возможный дубликат [Simple Mod Rewrite] (http://stackoverflow.com/questions/7093190/simple-mod-rewrite) – mario

+0

-1: требуется дополнительная отладка; см. комментарий @ mario. –

ответ

11

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

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

Edit: Попробуйте заменить index.php с /index.php

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

Я дал ему шанс, но все равно получить 400 Bad Request. Просмотр журналов теперь, но я не могу найти ничего, стоит – bswinnerton

+1

@bswinnerton: попробуйте добавить '/' перед 'index.php'. Проверьте мой обновленный ответ. –

+0

Итак, я больше не получаю сообщение об ошибке, но он не перенаправляет url = asdf при вводе/asdf =/ – bswinnerton

0

Попробуйте без использования с помощью RewriteCond.

+0

Если я прокомментирую RewriteCond, я все равно получаю ошибку 400. – bswinnerton

+2

Эти две строки «RewriteCond» должны убедиться, что файлы и папки, которые действительно существуют, не переписываются. Например, 'http: // example.com/images/logo.png' не будет переписываться, если это изображение существует. –

+0

@Rocket Полезно знать для дальнейшего использования. Я просто работал с информацией, которую мне дали. – PseudoNinja

-1

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

+0

какое использование нужно ответить на супер старый вопрос **, на который уже был дан ответ **? –

1

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

sudo a2enmod rewrite 

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

sudo /etc/init.d/apache2 restart 

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

0

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

RewriteEngine on 


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

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

Смежные вопросы