0

私は、すべてのページにクエリ文字列の想定IDが必要なプロジェクトに取り組んでいます。たとえば、次のページ:

  1. example.com/alfa.php?id=1
  2. example.com/beta.php?id=30
  3. exapmle.com/gamma.php?id=50

URL を美しくするために、次の .htaccess を使用しています。

RewriteEngine On
## BEAUTIFUL URL
DirectoryIndex default.php
Options -Multiviews -Indexes +FollowSymLinks
#RewriteBase /
DirectorySlash off
# remove trailing slash
RewriteRule ^(.*)\/(\?.*)?$ $1$2 [R=301,L]
# rewrite /dir/file?query to /dir/file.php?query
RewriteRule ^([\w\/-]+)(\?.*)?$ $1.php$2 [L,T=application/x-httpd-php]

このコードは、次の変換を行います。

example.com/alfa.php?id=1 to example.com/alfa?id=1

X.php は常に変化しますが (X)、id は常に一定であると仮定すると、.htaccess ファイルの最適なコンテンツは何ですか?

いくつかの方法を試しましたが、どの方法が最適ですか?

example.com/alfa/1もう1つ、URLをANDに変換するにはどうすればよいですかexample.com/beta/30

4

1 に答える 1

0

?ルールの正規表現パターンでクエリ文字列 ( の後のすべてのもの) と照合しようとしています。クエリ文字列はその一致の一部ではなく、URI のみです。ただし、クエリ文字列に触れたくないので、自動的に追加されるため、一致させないでください。

RewriteEngine On
## BEAUTIFUL URL
DirectoryIndex default.php
Options -Multiviews -Indexes +FollowSymLinks
#RewriteBase /
DirectorySlash off
# remove trailing slash
RewriteRule ^(.*)\/$ $1 [R=301,L]
# rewrite /dir/file?query to /dir/file.php?query
RewriteRule ^([\w/-]+)$ $1.php [L,T=application/x-httpd-php]

example.com/alfa/1example.com/beta/30: _

RewriteCond %{THE_REQUEST} [A-Z]{3,9}\ /([\w/-]+)(\.php)?\?id=([0-9]+)
RewriteRule ^ /%1/%3 [L,R=301]

RewriteRule ^([\w/-]+?)/([0-9]+)$ $1.php?id=$2 [L,QSA,T=application/x-httpd-php]

他に試してみることができるのは、ルールを取り除き、Multiviewsオフにした を使用することです。マルチビューと mod_negotiation は、このようなもののために作成されました。

于 2013-09-20T17:38:56.527 に答える