2013-12-18 16 views
6

私のURLを変更したい。ここで私はこのルートディレクトリのディレクトリの書き換え方法

htdocs/ 
     example/ 
       public/ 
        login.php 
        people/ 
          people1.php 
          people2.php 
        animal/ 
          animal1.php 
          animal2.php 
        404.php 
       assets/ 
        css/ 
        js/ 

のようなディレクトリ構造を持っているし、私は私が持つ.htaccessのファイルを作成しようとした

localhost/example/login 
localhost/example/people/people1 
localhost/example/people/people2 
localhost/example/animal/animal1 
localhost/example/animal/animal2 

ルートに既存のディレクトリに合わせて、以下のようなURLをしたいです以下の内容

Options +FollowSymLinks 
RewriteEngine On 
rewritecond %{REQUEST_URI} !^/public/(.*) 
rewritecond %{REQUEST_URI} !^/assets/(.*) 
RewriteRule .* index.php [L] 

、それはindex.phpの

です
$requested = empty($_SERVER['REQUEST_URI']) ? false : $_SERVER['REQUEST_URI']; 

switch ($requested) { 

    case '/login': 
     include 'public/login.php'; 
     break; 
    default: 
     include 'public/404.php'; 
} 

私がlocalhost/example/loginに行ったときの宛先は404.php(ERROR)です。

お手伝いできますか?

+0

あなたはいくつかの 'rewritecond'を持っています...' rewriterule'はどこですか? –

+0

@AndyJonesもう一度私の質問を確認できますか? – ramadani

+1

http:// localhost/example/loginを試しましたか?または、他の何か? 404.phpページのどこかに '$ _SERVER [" REQUEST_URI "]'をダンプしますか? –

答えて

1

$_SERVER['REQUEST_URI']変数は、 URIです。したがって、http://example.com/example/loginに行く場合、$_SERVER['REQUEST_URI']変数は/example/loginです。あなたのコードの代わりに使用$_SERVER['PATH_INFO']に続いて

REQUEST_URI/example/publicになるので、^/public/が一致しないことに注意してください)

Options +FollowSymLinks 
RewriteEngine On 
rewritecond %{REQUEST_URI} !/public/(.*) 
rewritecond %{REQUEST_URI} !/assets/(.*) 
RewriteRule ^(.*)$ index.php/$1 [L] 

:あなたがやって試みることができる何かがにあなたのhtaccessファイルを変更しています。

1

あなたがに設定された優先度を持つPHP拡張隠そうとしているように見える:

RewriteEngine On 

# skip for existing files/directories (/assets will be skipped here) 
RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule^- [L] 

# try to load PHP file from public directory 
RewriteCond %{DOCUMENT_ROOT}/public/$1.php -f 
RewriteRule ^(.+?)/?$ /public/$1.php [L] 

# now try .php elsewhere 
RewriteCond %{DOCUMENT_ROOT}/$1.php -f 
RewriteRule ^(.+?)/?$ /$1.php [L] 
:あなたの DOCUMENT_ROOT/.htaccessファイルにこのコードを入れて他の場所

  1. 公開ディレクトリ
関連する問題