2013-07-09 3 views
2

У меня очень простой сайт для проверки 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

Любое предложение? Спасибо.

ответ

2

MultiViews может быть проблемой здесь.

Меняйте варианты:

Options +FollowSymLinks -MultiViews 
+0

здесь он работает, но когда я удалить косую черту это дарители 404 не найден – medk

+1

Ваше правило перезаписи должно быть так: 'RewriteRule^([.^/] +) /? $ /index.php?p=$1 [L, QSA] 'Таким образом, добавление конечной косой черты необязательно. – anubhava

Смежные вопросы