Пренасочване на урл адреси

pro12

Registered
Опитвам да пренасоча урл на новини с htaccess. По следния начин
Код:
Redirect 301 /viewnews.php?id=10 http://сайт/news/10
, но пренасочването не работи отваря старя адрес. Това ми е htaccess файла
Код:
<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
	
</IfModule>
Redirect 301 /viewnews.php?id=10 http://сайт/news/10
Как да направя работещо пренасочване?
 
Ама нали пренасочваш всички заявки към индекса:

Код:
    RewriteRule ^ index.php [L]

Трябва оттам да определиш кога ще редиректваш браузъра.

L флагът накрая указва, че спираш дотук и не гледаш по-нататъшни инструкции в htaccess.
Знакът ^ в случая означава, че прихващаш всички заявки. (по принцип означава начало на стринг в regex)

От тези двете следва, че всички заявки към сървъра (за които няма съществуващ файл/директория) ги пращаш към индекса и нататъка какъвто и htaccess да имаш, той няма да се изпълни.
 
anonimen каза:
Ама нали пренасочваш всички заявки към индекса:

Код:
    RewriteRule ^ index.php [L]

Трябва оттам да определиш кога ще редиректваш браузъра.

L флагът накрая указва, че спираш дотук и не гледаш по-нататъшни инструкции в htaccess.
Знакът ^ в случая означава, че прихващаш всички заявки. (по принцип означава начало на стринг в regex)

От тези двете следва, че всички заявки към сървъра (за които няма съществуващ файл/директория) ги пращаш към индекса и нататъка какъвто и htaccess да имаш, той няма да се изпълни.
Не ми е целта това. Аз искам да си пренасоча старите си урл към нови. Сега старите урл са така сайт/viewnews.php?id=10 новите урли са http://сайт/news/10
 
pro12 каза:
anonimen каза:
Ама нали пренасочваш всички заявки към индекса:

Код:
    RewriteRule ^ index.php [L]

Трябва оттам да определиш кога ще редиректваш браузъра.

L флагът накрая указва, че спираш дотук и не гледаш по-нататъшни инструкции в htaccess.
Знакът ^ в случая означава, че прихващаш всички заявки. (по принцип означава начало на стринг в regex)

От тези двете следва, че всички заявки към сървъра (за които няма съществуващ файл/директория) ги пращаш към индекса и нататъка какъвто и htaccess да имаш, той няма да се изпълни.
Не ми е целта това. Аз искам да си пренасоча старите си урл към нови. Сега старите урл са така сайт/viewnews.php?id=10 новите урли са http://сайт/news/10

Да, казвам ти, че трябва да го направиш в индекса, защото всичко пристига още отначало там.
 
pro12 каза:
Не ми е целта това. Аз искам да си пренасоча старите си урл към нови. Сега старите урл са така сайт/viewnews.php?id=10 новите урли са http://сайт/news/10

Код:
<IfModule mod_rewrite.c>
    RewriteEngine on

    RewriteCond %{QUERY_STRING} ^id=([^&]+)
    RewriteRule ^/?viewnews\.php$ http://new-site.com/news/%1? [L,R=301]

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

/viewnews.php?id=176 -> http://new-site.com/news/176
/viewnews.php?id=10 -> http://new-site.com/news/10
 

Горе