2013-03-19 2 views
0

У меня есть URLs, как это:нужны правила перезаписи Apache изменить часть URL

www.example.com/ index.php/категория-5/подкатегории/страницы

Я хочу переписать :

www.example.com/ категории/подкатегория/страница

Т.е. Я хочу удалить «index.php /», а также удалить «-5», но сохранить остальные.

Я в пути над головой с Apache. Я обычно просто пишу простой простой PHP-код.

Я попробовал это, и это не сработало:

RewriteRule ^index.php/category-1/(.*)$ /category/($1) [NC] 

Благодаря

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

ответ

1

Не используйте круглые скобки в сменной части:

RewriteRule^index.php/категория-1 /(.*)$/категория/$ 1 [NC, R = 301]

См:

http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriteoptions

и

http://httpd.apache.org/docs/current/rewrite/flags.html

можно активировать журналы отладки, я всегда находил это полезным, как RewriteRule коварны:

RewriteLog "/path-to-log/rewrite.log" 
RewriteLogLevel 4 
+0

Хм, это не делает ничего –

0

ВОПРОС:

www.example.com/index.php/category-5/subcategory/страница

Я хочу переписать:

www.example.com/category/subcategory/page


Вы можете попробовать это в одном файле .htaccess в корневом каталоге:

Options +FollowSymlinks -MultiViews 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php/([^-]+)-[\d]+/([^/]+)/([^/]+)/? /$1/$2/$3 [R=301,NC,L] 

Перенаправление постоянно:

http://www.example.com/index.php/par1-AnyDigits/par2/par3

http://www.example.com/par1/par2/par3

Где par1, PAR2 и par3 - это динамические строки.

Для внутреннего отображения, замените [R = 301, NC, L] с [NC, L]