2013-10-08 4 views
1

мне нужна помощь переписывания следующий URL,:htaccesss переписан не будет работать

example.com/news/top/2/

example.com/news/top/

Это мой текущий файл .htaccess

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/\.]+)/([^/\.]+) index.php?view=$1&task=$2 
RewriteRule ^news/([^/\.]+)/([0-9]+) index.php?view=news&task=$1&page=$2 [L] 
RewriteRule ^news index.php?view=news 

Я думал, что это будет работать, но всякий раз, когда я посещаю = example.com/news/top/2/ , и я пытаюсь повторить вне $ _GET [ «страница»] он говорит, что переменная не определен.

Может ли кто-нибудь помочь с этой проблемой нарушения нерва?

ответ

2

Убедитесь использовать торцевую якорь $

RewriteEngine on 

## If the request is for a valid directory 
RewriteCond %{REQUEST_FILENAME} -d [OR] 
## If the request is for a valid file 
RewriteCond %{REQUEST_FILENAME} -f [OR] 
## If the request is for a valid link 
RewriteCond %{REQUEST_FILENAME} -l 
## don't do anything 
RewriteRule^- [L] 

RewriteRule ^news/([^/.]+)/([0-9]+)/?$ index.php?view=news&task=$1&page=$2 [L] 
RewriteRule ^([^/.]+)/([^/.]+)/?$ index.php?view=$1&task=$2 [L] 
RewriteRule ^news/?$ index.php?view=news [L] 
+1

Спасибо, что сработали. – rokkz

+0

@rokkz: Рад знать, что это сработало для вас. – anubhava

1

Это правило:

RewriteRule ^([^/\.]+)/([^/\.]+) index.php?view=$1&task=$2 

нуждается в $:

RewriteRule ^([^/\.]+)/([^/\.]+)$ index.php?view=$1&task=$2 

, потому что он сопрягает за рамки просто /dir1/dir2

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