.htaccess: как переписать только URL .php? - PullRequest
2 голосов
/ 29 марта 2009

Мой rewriterule с условием работает нормально, как показано ниже:

http://www.sitename.com/index.php?n=text перенаправляет на http://www.sitename.com/pages/text

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

http://www.sitename.com/pages/text?n=text

Может ли кто-нибудь помочь мне в этом? Код htaccess приведен ниже.

RewriteCond %{QUERY_STRING} ^n=(.*)$
RewriteRule index.php http://www.sitename.com/pages/%1 [r=301,nc]

Ответы [ 3 ]

1 голос
/ 29 марта 2009

Вы, вероятно, хотите поймать "index.php.*". В противном случае mod_rewrite заменяет только часть "index.php" URL-адреса "index.php?n=text" новым URL-адресом.

0 голосов
/ 30 марта 2009

не используйте URL в правиле перезаписи, apache затем отправляет код http 200, а затем 301 ...

попробуйте что-нибудь как это:

RewriteRule (index\.php)(?n=)(.*) /pages/$3 [r=301]
0 голосов
/ 30 марта 2009

Guss,

Из того, что вы предложили, я реконструировал его следующим образом:

RewriteCond %{QUERY_STRING} ^n=(.*)$
RewriteRule index.php.* http://www.sitename.com/pages/%1 [r=301,nc]

Кажется, это тоже не работает. Можете ли вы уточнить, что вы сказали?

спасибо адитйа

...