Мой 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]
Вы, вероятно, хотите поймать "index.php.*". В противном случае mod_rewrite заменяет только часть "index.php" URL-адреса "index.php?n=text" новым URL-адресом.
index.php.*
index.php
index.php?n=text
не используйте URL в правиле перезаписи, apache затем отправляет код http 200, а затем 301 ...
попробуйте что-нибудь как это:
RewriteRule (index\.php)(?n=)(.*) /pages/$3 [r=301]
Guss,
Из того, что вы предложили, я реконструировал его следующим образом:
RewriteCond %{QUERY_STRING} ^n=(.*)$ RewriteRule index.php.* http://www.sitename.com/pages/%1 [r=301,nc]
Кажется, это тоже не работает. Можете ли вы уточнить, что вы сказали?
спасибо адитйа