0

次のような着信リンクを変換するために.htaccessファイルを設定しようとしています。

http://domain.com/root/TopNav/SubNav/SEO-friendly-file-name-p#

これに:

http://domain.com/root/index.php?t=TopNav&s=SubNav&l=SEO-friendly-file-name&p=#

ここで、p#はページIDであり、TopNav/SubNavはファイルへのナビゲーションメニューパスを表します。

.phpの後に引数がある場合を除いて、すべての場合に機能させることができました(modの書き換えは行いますが、パラメーターは失われます)。もともと、スクリプトで使用できるように.htaccessでURL文字列を解析することを望んでいましたが、この時点で、着信URLを取得して文字列としてroot/にダンプするソリューションに満足しています。 index.php。

これが私が現在.htaccessに持っているものです:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^(.*)/(.*)\.php     index.php?s=$1&p=$2 [L]
RewriteRule ^(.*)/          index.php?p=$1&s=$1 [L]
</IfModule>
ErrorDocument 404 /404.php

私が間違っているかもしれないことについて何か考えはありますか?これを行うためのより良い方法の提案はありますか?

ありがとう

**誰かが[L]を[L、QSA]に変更することを提案しましたが、それはうまくいったようです。ありがとう、それを提案した人は誰でも...

4

1 に答える 1

0

次のようなURUを使用する/TopNav/SubNav/SEO-friendly-file-name-p#場合:必要な4つのグループがあります。

  1. TopNav
  2. SubNav
  3. SEOに適したファイル名

したがって、これら4つのものを一度にキャプチャできるように正規表現を作成する必要があります。

試す:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/(.+?)-p([0-9]+)$ index.php?t=$1&s=$2&l=$3&p=$4 [L,QSA]

/rootこれはあなたのディレクトリのhtaccessファイルに行きます

于 2013-03-05T03:03:05.040 に答える