2017-02-12 21 views
2

Я попытался следующий код в .htaccess 301 перенаправлять www.example.com/?content=file.php&id=16www.example.com/file/This-is-the-title/16.htaccess; 301 перенаправление не работает

RewriteEngine on 
Redirect 301 /?content=file.php&id=16 /file/This-is-the-title/16 

Но это не перенаправляет. URL остается таким, каким он есть.

Что я делаю неправильно?

P.S. Я не прошу переписать или так. Мне нужно перенаправление 301.

+0

Помог ли мой ответ для вас? Может быть, вы могли бы принять это? Благодарю. – SuperDuperApps

+0

Я удалил ваши изменения Дэвид, кроме опечатки на заменяющем URL, который был взят из вашего вопроса (и все еще там - я обновлю свой вопрос). Чтобы пройти через них, REQUEST_URI может быть протестирован в RewriteRule,^$ совпадает с совпадением '/', когда он находится в .htaccess. Query_string можно сопоставить так, как я это делаю, это не должно быть регулярное выражение. Базовый URL 'http: // www.example.com' не должен заменяться, если он не меняется. – SuperDuperApps

+0

Я также вернул «RewriteEngine on», поскольку это необходимо, так полезно для тех, кто ссылается на это позже, даже если у вас уже есть это место для других правил, поэтому не нужно его против этого. Это должно сделать ответ полным. – SuperDuperApps

ответ

3

Директива Redirect не соответствует строкам запроса. Используйте это вместо:

RewriteEngine on 
RewriteCond %{QUERY_STRING} =content=file.php&id=16 
RewriteRule ^$ /file/This-is-the-title/16? [R=301,L] 
+1

Вам понадобится только один символ '?' В конце 'RewriteRule' _substitution_ (или' QSD' на Apache 2.4+), чтобы удалить строку запроса из перенаправленного URL. – MrWhite

+0

Спасибо, я всегда забываю об этом! Возможно, я сейчас запомню :) – SuperDuperApps