У меня очень простой сайт для проверки URL-адреса на моем онлайн-хосте, потому что мое оригинальное приложение отлично работало на моем локальном WampServer, но не работало с моим онлайн-хостом.URL Rewrite не работает для общего хостинга
вот мой код:
index.php:
<?php
$p = $_GET['p'];
$pages = array (
'home' => 'home.php',
'about' => 'about.php',
'contact' => 'contact.php'
);
if (isset($pages[$p])) $page = $pages[$p];
else $page = 'home.php';
include $page;
?>
<!doctype html>
<html>
<head></head>
<body>
<?php echo $body; ?>
<br /><br /><br />
<a href="http://newcryo.com/">HOME</a> - <a href="http://newcryo.com/about/">ABOUT</a> - <a href="http://newcryo.com/contact/">CONTACT</a>
</body>
</html>
home.php:
<?php
$body = '
<h1>Home</h1>
This is the home page
';
?>
about.php:
<?php
$body = '
<h1>About</h1>
This is the about page
';
?>
contact.php:
<?php
$body = '
<h1>Contact</h1>
This is the contact page
';
?>
.htaccess:
Options +FollowSymLinks
RewriteEngine On
# home
RewriteRule ^$ index.php?p=home [L]
# other pages
RewriteRule ^([^/\.]+)/$ index.php?p=$1 [L]
Теперь, когда URL является "http://newcryo.com/" показывает содержимое домашней страницы.
Но когда «http://newcryo.com/about/» или «http://newcryo.com/contact/» он ничего не показывает, и это открывает about.php или contact.php непосредственно не в index.php, как для домашней страницы
для обоих он должен быть переведен на "http://newcryo.com/index.php?p=about "но здесь это делает, как" http://newcryo.com/about.php "
Мой местный хозяин WampServer с PHP 5.4.3/Apache 2.2.22 Мой удаленный хост является OVH персидско общий хост с PHP 5.4/Apache 2.2.20
Любое предложение? Спасибо.
здесь он работает, но когда я удалить косую черту это дарители 404 не найден – medk
Ваше правило перезаписи должно быть так: 'RewriteRule^([.^/] +) /? $ /index.php?p=$1 [L, QSA] 'Таким образом, добавление конечной косой черты необязательно. – anubhava