2

過去2日間の次の書き換えを試みています。

  1. www.example.com の使用を強制 -完了
  2. PHP 拡張機能を非表示 -完了しましたが、それが良い方法かどうかはわかりません
  3. カスタム ページへの 404 エラー -完了

今私の主な問題は

4. ルート (/) ですべてのページをホストする

次のファイルがあります。

news.php
search.php
store.php
allstores.php

クライアントは次のように要求します。

Type 1: http://www.example.com/news

Type 2: http://www.example.com/search?q=term

Type 3: http://www.example.com/allstores/H

Type 4: http://www.example.com/myname

これらのクライアントリクエストを次のように処理したい:

Type 1: http://www.example.com/news  ---rewrite to (add extension)-->news.php

Type 2: http://www.example.com/search?q=term  ---->No change, Let it same

Type 3: http://www.example.com/allstores/H --rewrite to --->http://www.example.com/allstores.php?ln=H

Type 4: http://www.example.com/myname ---rewrite to------> http://www.example.com/store?st=myname

私は次の書き換えを試みました:

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]

RewriteRule ^(.*) store.php?st=$1 [L]
RewriteRule ^allstores/(.*)$ allstores.php?ln=$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+)$ /$1.php [L]

ErrorDocument 404 /404.php

どんな助けでも大歓迎です、ありがとう

4

1 に答える 1

1

あなたが試すことができます:

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

## If the request is for a valid directory
RewriteCond %{REQUEST_FILENAME} -d [OR]
## If the request is for a valid file
RewriteCond %{REQUEST_FILENAME} -f [OR]
## If the request is for a valid link
RewriteCond %{REQUEST_FILENAME} -l
## don't do anything
RewriteRule ^ - [L]

RewriteRule ^allstores/([^/]+)/?$ /allstores.php?ln=$1 [L,QSA,NC]

# To internally forward /foo to /foo.php
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.+?)/?$ /$1.php [L]

RewriteCond %{QUERY_STRING} !^q=.+ [NC]
RewriteRule ^([^/]+)/?$ /store.php?st=$1 [L,QSA]
于 2013-10-01T16:45:28.800 に答える