2013-09-29 3 views
1

Я работаю над URL моего веб-сайта. Я просто переписать URL ИзСостояние перезаписи htaccess не работает

http://www.website.com/index.php?url=some-text 

в

http://www.website.com/some-text 

Для этого я использую следующий код .htaccess

Options +SymLinksIfOwnerMatch 
RewriteEngine on 

RewriteBase/

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


Теперь я хочу добавить еще одну переменную page number в URL.

http://www.website.com/index.php?url=some-text&page=1 

Я хочу, чтобы переписать его как

http://www.website.com/some-text/1/ 
AND 
http://www.website.com/some-text/1 

Я попытался следующий код, но почему-то не работает, он показывает мне ошибку сервера.

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule ^(.*)/(.*)$ index.php?url=$1&page=$2 [L,QSA] 
RewriteRule ^(.*)/(.*)/$ index.php?url=$1&page=$2 [L,QSA] 
+0

Нет, вы переписываете наоборот. От 'http: // www.website.com/some-text' до' http: //www.website.com/index.php? Url = some-text'. Вы всегда начинаете искать исходный запрос, когда пользователь вводит адрес. Просто заметив. – hakre

+0

Работает ли первый код и только после того, как вы добавили вторую строку, вы получили внутреннюю ошибку сервера? Кроме того, если вы получаете внутреннюю ошибку сервера, проверьте журнал ошибок этого сервера и сообщите причину. Он чаще всего содержит лучшее описание проблемы, которую вы хотели бы знать, и добавить к вашему вопросу. – hakre

+0

Почему не по теме ?? добавьте комментарий, чтобы я мог понять свою ошибку. –

ответ

1

Вам не нужны 2 новых правила. Достаточно одного с дополнительным /. Ваш полный код:

Options +SymLinksIfOwnerMatch -MultiViews 
RewriteEngine on 

RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule ^([^/]+)/([^/]+)/?$ index.php?url=$1&page=$2 [L,QSA] 

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

Еще одна проблемы в новом коде, что RewriteCond не получает применяться для последнего RewriteRule, поскольку они применимы к следующему RewriteRule только.

+0

его рабочие, но теперь файлы css и javascript не применяются. –

+0

Это наиболее распространенная проблема, с которой сталкиваются люди после перехода на симпатичный URL. Решение прост: убедитесь, что ваши js, css и т. Д. Всегда используют абсолютные пути, т. Е. Начиная с 'http: //' или '/' – anubhava

+0

все в порядке. Спасибо за помощь :) –

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