1

Apache と PHP で URL の書き換えを試みています。これは SEO 上の理由によるもので、foo.com/product-category/product-title は foo.com/product.php?id=999 になります。もちろん、URL を変更せず、SEO に適したバージョンにしたいと考えています。

私は現在、セットアップが機能しているサイトを持っていますが、それは保守可能なソリューションではなくハックであるため、正しいことをしようとしています!

現時点で私は持っています: -

RewriteRule ^([a-zA-Z0-9_\ \-\%]+)/?($) /url_redirect.php?page=$1 [QSA,L]

http://foo.com/random-url?foo=1&bar=2は $_GET['page'] = 'random-url' および $_GET['foo'] で /url_redirect.php になります。= 1 など

1 レベル深い場合 (例: http://foo.com/non-existing-directory/random-url?foo=1&bar=2 )でまったく同じことが起こることを望みます。

non-existing-directoy を実際のディレクトリにして、そこから .htaccess にすることもできますが、もっと簡単な方法が必要です。ディレクトリ名をハードコードする必要はありません (これは、私の現在のソリューションがどのように機能するかのようなものです) )。

問題はおそらく正規表現に問題があると思います。彼らはいつも私を打ち負かします。

4

1 に答える 1

1

私はこれを試しましたが、それを達成するための最良の方法ではないかもしれません(私は書き直しの第一人者ではありません)

RewriteEngine On
RewriteRule ^([a-zA-Z0-9_\ \-\%]+)/([a-zA-Z0-9_\ \-\%]+)?($) url_redirect.php?page=$2 [QSA,L]
RewriteRule ^([a-zA-Z0-9_\ \-\%]+)/?($) url_redirect.php?page=$1 [QSA,L]

申し訳ありませんが、私のローカル設定でした。これがあなたが望むと思う方法です!

RewriteEngine On
RewriteRule ^([a-zA-Z0-9_\ \-\%]+)/([a-zA-Z0-9_\ \-\%]+)?($) /url_redirect.php?page=$2 [QSA,L]
RewriteRule ^([a-zA-Z0-9_\ \-\%]+)/?($) /url_redirect.php?page=$1 [QSA,L]

url_redirect.php の前の / に注意してください

于 2012-11-24T11:55:46.903 に答える