Въпрос за адресбара

tyrla4eto

Registered
Здравейте, искам да направя следното в моя сайт:
Горе където се пише сайта да не ми излиза "www.saita.com/index.php" или "www.saita.com/contact.php", а да излизат "www.saita.com/index", "www.saita.com/contact" или по-някакъв друг начин, но не и кое е името на файла за дадената страница. Мисля, че става с .htaccess файла, но не знам как се работи с него.

И друго, ако се прави него, как мога да го активирам за xampp, защото ако имам някакъв код в този файл, ми вади грешка и не ми отваря сайта?
 
Поставяш това:
Код:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([a-zA-Z-_]+)/?$  ./$1.php [L]
 
tyrla4eto каза:
Никаква реакция.... Няма разлика
А когато напишеш файла без .php пак ли няма разлика или просто не излиза?

Ето така би трябвало да стане:
Код:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([a-zA-Z-_]+)/?$  ./$1.php [L]
 
Да когато го напиша без php го отваря, а има ли някакъв друг вид кодировка от рода на news?z=N2F и ако напиша горе news.php да изписва, че няма такъв файл
 
Ако желаеш новината да се отваря така: .com/news/2 а не
.com/news.php?id=2 правиш така:
Код:
RewriteRule ^news/([^/]*)$ view_news.php?id=$1 [L]
това view_news.php е файла във който е новината.
 
Правя за различните страници и файлове не за ИД, и най-интересното е че за всичко страници работи както трябва, но за index.php неще да зарежда... Ако го пиша .com/index.php зарежда, но ако го напиша .com/index/index не зарежда, а всички останали файлове ги зареждам по-този начин
.com/index/contact .com/index/news и всичко върви без проблеми
 
Ясно. А как да направя, като напише някой горе .com/index.php или contact.php да му дава, че страницата не съществува?
 
Най добре е да го направиш когато някой отваря *.php да го насочва към rewrite страница с header("Location: site");
 
Ясно мерси и за това. Друг проблем относно първия код (смисъл - не се получи това което ми трябва) защото както каза explozen .com/index/index
търси в папката index, а мен файловете ми са в няколко папки и няма как да ги търси във всички папки, търси ги само в папката index....
 
Давам ти пример от моя сайт.

Код:
$page = htmlspecialchars($_REQUEST['p']);
if (!$page) { 
// Ако е отворен просто Index.php отваря главната страница: main.php 
header("Location: ".MAIN_URL."main", true);
exit();
}

if ($page && (file_exists( PAGES."".$page.".php"))) {
include ( PAGES."".$page.".php");
} else { 
// Ако файла не съществува отваряме извежда съобщение за грешка и отваря main.php 
header("Location: ".MAINSITE."not_exist", true);
exit();

Идеята на този код е всяка странца да минава през index.php т.е. имаш една папка примерно : public_html/_src/pages/*.php

Скрипта търси заявка index.php?p=* в дадената папка ако не я намери връща грешен резултат ако я намери отваря файла отговарящ на заявката.

При мен повечето неща са дефинирани и за това изглеждат малко нереални

<?
define('MAINSITE', 'http://domain.com/');
define('PAGES', 'public_html/_src/pages/');
?>

Би трябвало лесно да схванеш идеята.

За мен това е най-простия и лесен начин за динамични страници в сайт.

Функциите можеш да ги пръснеш навсякъде и те ще се използват от страниците независимо в кои папки са при условие че всичко се include в index.php

П.С.

Код:
RewriteEngine on
RewriteBase /
Options +FollowSymLinks
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?p=%{REQUEST_URI}&%{QUERY_STRING} [NE,L]

Това ти представлява .htaccess
 
Значи, до колко разбрах, името на папката и името на файла вътре трябва да е 1 и същ? И кода от индех търси името на папката от адрес бара горе "?p=page" и отваря файла от тази папка, така ли е или грешно съм разбрал?
 
папката можеш да си я кръстиш както искаш. идеята е

Код:
if ($page && (file_exists("pytq/do/faila/".$page.".php")))
 
Ясно обаче нещо не работи, сигурно аз не мога да го наглася. Дава ми следната грешка:
Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\index.php:15) in C:\xampp\htdocs\index.php on line 46
- ако съм на index.php

и

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\index.php:15) in C:\xampp\htdocs\index.php on line 54

- ако съм на друг файл...
 
Мне няма разлика, видях темата проверих за празни полета и за UTF8 without BOM не става, даже на UTF8 не ми чете кирилицата... само на ANSI
 

Back
Горе