1

まず、私の下手な英語で申し訳ありません。URLを書き換えるように.htaccessを設定したい。

example.com/company1.com

代わりに example.com/sub=company1.com

私の.htaccess今:

RewriteEngine On
RewriteRule ^([a-z_]+)/?$ index.php?sub=$1

私はstackoverflowで検索していました。すべての文字に (.*) 正規表現を使用するか、ドメイン文字列 ( company1.con) に「ドット」文字を含めるために ([az\.]+) を使用すると、スキンが壊れました。私の一時的な解決策は、代わりに http://example.com/company1_comで ([a-z_]+) を使用することですhttp://example.com/company1.com それは悪い解決策です:(したがって、この問題の正規表現を教えてください。ありがとう。

4

3 に答える 3

1

Apache の書き換えについては、mod_rewriteで説明されています。

あなたにとって、可能なGETパラメータまたはパスを無視する限り、それはそうあるべきです

RewriteEngine On
RewriteRule ^/([^?/]+) /index.php?sub=$1 [L]

index.php の前に「/」がない、GET に長いパスがある ( example.com/company1.com/css/style.css )、またはフォームを送信する ( example.com /company1.com?a=foo&b=bar )。

于 2012-08-03T11:25:45.950 に答える
0

これを試してみてください

RewriteEngine On
RewriteRule ^(.*)$ index.php?sub=$1
于 2012-08-03T11:18:31.787 に答える
0

index.phpがループしないようにする必要があります。

RewriteEngine On
# let index.php pass through, thus stopping the rewrite loop
RewriteRule index.php - [L]
# route everything to index.php
RewriteRule ^(.*)$ /index.php?sub=$1 [L]

最初に既存のリソースをチェックすることもできます。index.php が存在するため、ループも中断されます。これにより、javascript や css などの静的コンテンツをリクエストしている場合、index.php を介してルーティングされなくなります。

RewriteEngine On
# request isn't for an existing file or directory
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# route everything to index.php
RewriteRule ^(.*)$ /index.php?sub=$1 [L]
于 2012-08-03T15:08:48.657 に答える