1

2日間の苦労と約1ポンドの髪の減少、私は助けを求める時が来たと思います. 最近、プロジェクトをメインのサブディレクトリに移行したので、構造は次のようになります。

-application/
   -index.php
   -signup/
      -index.php
      -signup_set.php
-css/
-js/

すべての URL から「application/」を除外するために、mod_rewrite に自分の仕事をさせようとしています。ルート .htaccess で取得した場所は次のとおりです。

RewriteEngine On 

#first round through, prepend 'application/' to request
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !^application

RewriteRule ^(.*)$ application/$1 [L]

#second round through, if the new url is not directory or file, append .php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$ $1.php [L] 

私は regex/mod_rewrite についてよく理解していないかもしれませんが、これは実際には部分的に機能しているようです。部分的に。これに関する奇妙な部分は、「pretty url」(www/signup など) にルーティングすると、トップバーの URL が「application/」(www/application/signup など) を含むように物理的に書き換えられることです。どういうわけか、この「サイレント」書き換えプロセスはかなりうるさくなっています...何か提案はありますか? ルート ディレクトリを変更できることはわかっていますが、css/js ファイルを参照するコードを書き直す必要があります。何よりも興味があり、htaccess を試してみました。どんな助けでも大歓迎です!StackOverflow に感謝します。

PS私はWindows 7でApacheを実行しており、仮想ホストを使用しています(関連する場合)

4

1 に答える 1

2

以下のルールは、仮想ホストを使用して Windows 7 で Apache を実行している場合に有効です。変更したのは 2 番目だけRewriteCondです。

RewriteEngine On

# Append trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(?:\.\w+|/)$
RewriteRule ^(.*)$ /$1/ [L]

# First round through, prepend 'application/' to request
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/application
RewriteRule ^(.*)$ application/$1 [L]

# Second round through, if the new url is not directory or file, append .php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\.\w+$
RewriteRule ^(.*)/$ $1.php [L]
于 2012-07-15T00:48:11.843 に答える