0

私は次のような状況にあります。私はこのようにすべてのURLを指し示したい:

http://localhost/mypage

長いURLには、次のようになります。

http://localhost/index.php?&page=mypage

そして、PHPで次のようなことを行います。

include 'pages/' . $_GET['page'] . '.php';

次のことを試しましたが、エラーが発生します。

RewriteRule ^(.+)$ index.php?&page=$1 [NC]

.htaccessファイルにすべてのページをリストせずにこれを行う方法はありますか?

4

4 に答える 4

1

これを試して:

RewriteEngine on

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

したがって、http://example.com/aboutをリクエストすると、 http ://example.com/index.php?page =aboutとして書き直されます。

$_GET['page']また、index.phpスクリプトでも検証を行うことをお勧めします。そうしないと、ファイルシステムをナビゲートできるようになるからです。

于 2012-12-12T13:42:50.603 に答える
0
# This line starts the mod_rewrite module
RewriteEngine on

# If the request is for a file that already exists on the server
RewriteCond %{REQUEST_FILENAME} !-f

# Pass all trafic through the index file (if the requested file doesn't exist)
RewriteRule ^(.*)$ index.php?$1 [L,QSA]

/ project/1はと同じになります$_GET['project'] = 1

于 2012-12-12T13:27:24.923 に答える
0

あなたの最初の行は次のようになります:

RewriteEngine On

次に使用する

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$ index.php?page=$1 [L,QSA]

それ以外の

RewriteRule ^(.+)$ index.php?&page=$1 [NC]
于 2012-12-12T13:28:18.980 に答える
0

これはあなたが必要なものです

RewriteEngine On
RewriteRule ^([a-z]+)$ index.php?&page=$1 [QSA]
于 2012-12-12T13:29:11.013 に答える