RewriteRule да не показва .php, тема 2

r_a_s

Registered
Здравейте, пиша нова тема защото старата я затворих, като дадох +1 на anonimen. Понеже видях коментара на embaka и ми хареса ще помоля него или някой друг потребител да ми каже, как мога да направя редирект 301 от страница page.php към несъществуващата страница page с RewriteRule в файла .htaccess ? Аз пробвах по този начин и ме редиректва, обаче page не съществува:
Код:
RewriteRule page.php page [R=301]
 
Съжалявам, r_a_s, че съм дал лош код, просто показах как бих го направил аз. Досега не се бях интересувал от буквите, които стоят между [], но сега проверих и разбрах по-добре как работят. Сега можеш и ти да видиш:
http://httpd.apache.org/docs/current/rewrite/flags.html
 
Revelation каза:
Еми защо не пращаш код 404 ? Нали не съществува :D
Ами ако си най-обикновен потребител, който си няма и представа от htaccess и прочие :) като въведеш http://lоcalhost/page.php (например) и като видиш, че страницата не съществува...:x Затова по-добре от по-горния адрес да се пренасочва (всъщност просто да се смени url-то) с htaccess от page.php на page за по-добра четимост.
Тоест идеята е да не дразниш посетителя като му по-казваш колко си добър в това да пишеш страници с име без разширение :twisted: :D

Аз така го разбирам. :)

А за проблема на r_a_s:
Във втората част на rewriterule-то трябва да изпишеш пълният път на файла.
Например:

Код:
RewriteRule page.php http://localhost/page [R=301]

На мен ми тръгва :?:
 
anonimen, този код
Код:
RewriteRule page.php http://localhost/page [R=301]
ме пренасочва към page в url-то, обаче не ми отваря самата страница, тоест се едно не съществува такава страница. А нали целта е да ми отваря страницата, както ми отваря page.php.
 
r_a_s каза:
anonimen, този код
Код:
RewriteRule page.php http://localhost/page [R=301]
ме пренасочва към page в url-то, обаче не ми отваря самата страница, тоест се едно не съществува такава страница. А нали целта е да ми отваря страницата, както ми отваря page.php.
Мда, тва е малко трудно да нацелиш комбинацията.
Та логиката е следната:
Ако видиш url page.php, пренасочи с r=301 към page:
Код:
RewriteRule ^page\.php$ http://localhost/page [R=301]
Ако видиш url page, зареди страницата page.php, и приключи с пренасочванията (флаг end):
Код:
RewriteRule ^page$ page.php [END]
Защо "приключи действията"?
Ами иначе ще стане това:
Въвеждам някакво url, напр. page, което се пренасочва към page.php, което пък от своя страна се пренасочва отново към page и се получава безкраен цикъл.

Целият код:
Код:
RewriteEngine on
RewriteRule ^page\.php$ http://localhost/page [R=301]
RewriteRule ^page$ page.php [end]

Ако отворил онзи линк, ще видиш, че няма значение дали флаговете ги пишеш с малка или голяма буква :)
 

Back
Горе