0

これは答えられたと確信しています。私は数時間読んでいて、どこにも行きません。今夜はこれが必要なのですが、頭が痛いので、すばらしいインターネットに助けを求めています。

私はすべてのページを実行しようとしていますindex_new.php(そうすることにしたとき、それはすべて理にかなっていました、誓います)。静的ページと動的ページの 2 種類のページがあります。動的ページはすべて同じ種類のページですが、データベース (MySQL) に基づくデータが異なります。私はこれらの書き換えをしようとしています

  • /about => index_new.php?page=about
  • /インストール => index_new.php?page=about
  • /installations/{site_id} => index_new.php?page=site&siteID={site_id}

(about一般的なものにできればいいのですが、運を押したくありません) 私の .htaccess ファイルは次のとおりです。

# enable rewrite
Options +FollowSymLinks
RewriteEngine On
RewriteBase /

# rewrite all physical existing file or folder
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d

# allow things that are certainly necessary
RewriteCond %{REQUEST_URI} "/statics/" [OR]
RewriteCond ${REQUEST_URI} "/ajax/"

# rewrite rules
RewriteRule ^about index_new.php?page=about
RewriteRule ^/installations index_new.php?page=list
RewriteRule ^/installations/(.*) index_new.php?page=site&id=$1

/aboutまたは他のページに移動しようとすると、HTTP 404 が表示されます。注として、私のルートはそこにhttp://localhost/~user/public_html/newあり、.htaccessファイルはそこにあります。

4

1 に答える 1

2

提供された:

  1. 質問の条件は、各ルールで満たす必要があります。(次の書き換えルールに対してのみ有効であるため、繰り返されます)。

  2. .htaccess ファイルはルートにあります。

質問のルールセットの代わりにこれを試すことができます:

Options +FollowSymLinks -MultiViews
RewriteEngine On

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI}  /about/?$      [NC]
RewriteRule .*  /index_new.php?page=about [NC,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI}  /installations/?$ [NC]
RewriteRule .*  /index_new.php?page=list     [NC,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI}  /installations/([^/]+)/? [NC]
RewriteRule .*       /index_new.php?page=site&id=%1 [NC,L]

サイレント マップ:

http://example.com/about

http://example.com/index_new.php?page=about


http://example.com/installations

http://example.com/index_new.php?page=about


http://example.com/installations/Anything

http://example.com/index_new.php?page=site&Anything


永続的で目に見えるリダイレクトの場合は、[NC,L] を [R=301,NC,L] に置き換えます。

ノート:

問題のこれらの条件は、目的が明確でないため使用されませんでした。

   RewriteCond %{REQUEST_URI} "/statics/" [OR]
   RewriteCond ${REQUEST_URI} "/ajax/"

それらを 1 つまたは複数のルールに含めるには、次のようにします。

# For NOT condition, include the next line before the corresponding rewrite rule:
RewriteCond %{REQUEST_URI} !(statics|ajax) [NC]
       
# For positive condition, include the next line before the corresponding rewrite rule:
RewriteCond %{REQUEST_URI}  (statics|ajax) [NC] 
于 2013-03-13T01:48:33.463 に答える