RewriteRule да не показва .php

r_a_s

Registered
Здравейте, имам този код
Код:
RewriteRule ^([-\w0-9_]+)$ $1.php [L,NC,QSA]
в .htaccess, който преобразува страниците от page.php на page. Проблемът е, че като напишеш page или page.php ми отваря страницата, а аз искам да ми я отваря само с page, а като напишеш page.php да ми дава грешка! Как може да стане това?
 
Ето пример:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([a-zA-Z-_]+)/?$ ./$1.php [L]
RewriteRule ^news/([^/]*)$ view_news.php?id=$1 [L]

:?:
 
explozen, този код който си ми дал преобразува страницата page.php на page, но пак можеш да отвориш и page.php, а аз искам да дава грешка на page.php и да може да се отваря само page! Надявам се този път да съм се изразил правилно!
 
r_a_s каза:
explozen, този код който си ми дал преобразува страницата page.php на page, но пак можеш да отвориш и page.php, а аз искам да дава грешка на page.php и да може да се отваря само page! Надявам се този път да съм се изразил правилно!
Значи на твоя код преобразува page на page.php (потребителят въвежда първото, а вижда страницата на второто).
Трябва да добавиш обратното.
Пробвай така:

Код:
RewriteRule ^(page)$ /$1.php [L,NC,QSA]#preobrazuva "page" v "page.php"
RewriteRule ^(page)\.php$ /$1 [L,NC,QSA]#preobrazuva "page.php" v "page"

И тъй като файлът page не съществува (едва ли имаш файл със същото име без разширение), сървърът ще даде грешка за несъществуваща страница.
 
r_a_s каза:
anonimen, не става, дава ми грешка 500!

index.php e файлът, който да се покаже като се въведе page
error.php e файлът, който ще се покаже като се въведе page.php

код:
Код:
RewriteEngine On
RewriteRule ^page$ index.php [L,NC,QSA]
RewriteRule ^page\.php$ error.php [L,NC,QSA]
Бачка :)
Внимание! index, page, errpr трябва да са различни, иначе няма да работи.
 
Това не е много хубаво да се прави, с тая грешка, хубаво е да се направи редирект 301 от .php към страницата без php, защото в мометна се отваря с php, и като се променят линковете ще стане дабъл кънтент. За сео не е добра практика
 

Back
Горе