2013-03-01 2 views
0

У меня есть простой скрипт:PATH_INFO в PHP без файла кажущуюся

index.php:

<?php 

$path= $_SERVER['PATH_INFO']; 

if($path) 
    echo $path; 
else 
    echo "No Path Info"; 

?> 

Когда я бегу это как так www.website.com/index.php он работает. то есть) www.website.com/index.php/hello отзовется /hello

Однако, если я пойду в www.website.com/hello, я получаю URL не найдена ошибка, когда то, что я хочу, что /hello вторит.

Как сделать так, чтобы index.php не требовался для работы PATH_INFO ?!

+2

Какой веб-сервер вы используете? Это действительно вопрос конфигурации веб-сервера, а не вопрос php. Вы можете отобразить все URL-адреса для запуска index.php, если хотите. –

+0

Вам нужно использовать перезаписи. – datasage

+0

Условие перезаписи htaccess - это то, что вам нужно здесь –

ответ

0

Когда веб-страница запрашивается с сервера. Сервер просматривает путь (например, example.com/this/is/a/path), чтобы выяснить, какой файл нужно обслуживать и откуда.

Как я понимаю, вы хотите, чтобы ваш index.php обрабатывал все запросы. Как вы это сделаете, чтобы использовать URL-адрес перезаписи.

Предполагая, что вы используете веб-сервер apache, для этого вы можете использовать что-то, называемое * mod_rewrite *. See more on mod_rewrite here.

Для конкретных правил использования вы, вероятно, захотите использовать что-то вроде кода в ответе V_K.

1

Если вы используете веб-сервер Apache - написать это правило в ваш .htaccess ..

RewriteEngine on 
RewriteCond $1 !^(index\.php) 
RewriteRule ^(.*)$ /index.php/$1 [L] 
+0

Эти правила, похоже, не работают для субдоменов. Например, sudomain 'mo.website.com' дает мне плохую просьбу. – moesef

+0

сейчас его работы. очень странно. Я написал точно, что у вас есть, и он не работал. Я изменил правило, а затем изменил его, и я работал. – moesef

1

вам придется переписать в настройках URL-адреса в зависимости от того, что сервер, который вы используете, чтобы использовать чистые URL,

проверить это http://wettone.com/code/clean-urls

что-то на этих линиях

RewriteEngine on 
RewriteCond $1 !^(index\.php) 
RewriteRule ^(.*)$ /index.php/$1 [L] 
+0

эти правила, похоже, не работают для субдоменов. Например, sudomain 'mo.website.com' дает мне плохую просьбу. – moesef

+0

теперь его работа. очень странно. Я написал точно, что у вас есть, и он не работал. Я изменил правило, а затем изменил его, и это сработало. – moesef