1

以前に.htaccessファイルを変更して、「サブディレクトリ」(13/) をメイン ドメインに使用する「ディレクトリ」にできるように、以下を追加しました。

RewriteCond %{HTTP_HOST} ^(www.)?mydomain.com$
RewriteRule ^(/)?$ 13/index.php [L]

.php今、拡張機能と拡張機能を削除index.php?eventid=3したいindex/something

EDIT#1 [データベースsomethingに保存されている名前はどこにありますかid]

どうすればいいですか?以前、私はいくつかの PHP フレームワークで作業しましたが、それらには既に専用のurlファイルがあります。だから、あまり考えたことはありませんでした。しかし、今回はフレームワークを使用していないため、変更する必要があり.htaccessます。

私は周りを見回しましたが、信頼できるブログ/情報源を見つけることができませんでした.

編集#2

私のサブディレクトリはpublic_html/13/.

つまり、次のようにアクセスし たいにwww.mydomain.comリダイレクトしますwww.mydomain.com/13/www.mydomain.com/13/events.php?eventid=1www.mydomain.com/events/44

4

2 に答える 2

1
RewriteRule ^([A-Za-z0-9\-]+)/([A-Za-z0-9\-]+)/([0-9]+)/?$ $1.php?$2=$3

上記のコードは、http://www.mydomain.com/index/eventid/3/をhttp://www.mydomain.com/index.php?eventid=3にリダイレクトします。

htaccess は非常に柔軟で、構文を理解すれば、上記のバリエーションを作成するのは非常に簡単です。使用できる正規表現と、Rewrite モジュールが提供する無数のオプションについて読みたいと思うでしょう。私のリダイレクトのほとんどは上記のように見えますが、本当に単純です。

編集: あなたが探しているものの例は、スラッグを使用して ID 番号よりも意味のあるものに基づいてページを識別する Wordpress です。データベースからアイテムの名前を URL エンコードし、それをスラッグとしてデータベースに保存するか、ページのコンテンツを取得するデータベース クエリで使用できるようにする他の方法を見つける必要があります。次に、htaccess は次のようになります。

RewriteRule ^([A-Za-z0-9\-]+)/([A-Za-z0-9\-]+)/?$ $1.php?slug=$2

PHP では、スラッグを作成してデータベースに保存し、クエリで ID として使用できるようにする必要があります。

EDIT2: htaccess ファイル全体を次のように変更してみてください:

<IfModule mod_rewrite.c>
RewriteEngine on

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

RewriteRule ^([A-Za-z0-9\-]+)/([A-Za-z0-9\-]+)/([0-9]+)/?$ $1.php?$2=$3

</IfModule>

私はそれをテストしましたが、動作します。htaccess の他の何かがそれを台無しにしています。

于 2013-01-21T18:49:05.803 に答える
1

次のルールを使用してください。

 RewriteRule ^index/([0-9]+)/?$ /index.php?eventid=$1 [QSA,L]
于 2013-01-21T18:52:31.867 に答える