Въпрос относно mod_rewrite

tyrla4eto

Registered
Здравейте,
искам да скрия разширенията на файловете като примерно от

http://saita.com/test.php

Да стане

http://saita.com/test

Правя го чрез този код:

Код:
RewriteRule ^([-\w0-9_]+)$ /$1.php [L,NC,QSA]

И когато вляза в /zdravei ми го отваря без проблемно, но ако напиша /zdravei.php отново ми отваря страницата.

Има ли някакъв начин /test.php да не го отваря изобщо или каквото и разширение да напиша след test да ме пренасочва към /test ??


И също така на някой файлове имам

http://saita.com/test.php?page=stranica

Как да го направя така

http://saita.com/test/stranica
 
Пробвай това
Код:
RewriteEngine On
RewriteRule ^zdravei$ /zdravei.php [L]
RewriteRule ^test/([^/]*)$ /test.php?page=$1 [L]
 
Така работи мерси, но как да го направя, примерно когато напиша

http://saita.com/test.php

Да ме пренасочва към

http://saita.com/test

Мисълта ми е, ако се напише някакво разширение след името на файла, да не отваря страницата, а да пренасочва. Защото в момента ми отваря страницата и по 2-та начина
 
Код:
RewriteCond %{THE_REQUEST} \s\/(test).php [NC]
RewriteRule ^ /%1 [R=301,L]
RewriteRule ^(test)$ /$1.php [L]

Тествах го при мен с файл test.php и работи.

edit:
За да го направиш малко по-динамично и да работи за всяка страница без да добавяш условие за нея може да ползваш \w+

Код:
RewriteCond %{THE_REQUEST} \s\/(\w+).php [NC]
RewriteRule ^ /%1 [R=301,L]
RewriteRule ^(\w+)$ /$1.php [L]
 
Благодаря ти! Имам един последен въпрос, кода който ми даде работи за /.... .php , но също така искам да пренасочва и този адрес

/test.php?page=new

към

/test/new
 
Код:
RewriteCond %{THE_REQUEST} \s/+(\w+)\.php\?page=([^\s&]+) [NC]
RewriteRule ^ /%1/%2? [R=302,L,NE]

RewriteCond %{THE_REQUEST} \s/+(.+?)\.php[\s?] [NC]
RewriteRule ^ /%1 [R=302,NE,L]

RewriteCond %{DOCUMENT_ROOT}/$1\.php -f
RewriteRule ^(\w+)/([\w-]+)/?$ $1.php?page=$2 [L,QSA,NC]

RewriteCond %{DOCUMENT_ROOT}/$1\.php -f
RewriteRule ^(\w+)/?$ $1.php [L]
Ето го цялото. При мен работи
Код:
/test.php?page=new -> /test/new
/test.php -> /test
 

Back
Горе