0

共有 HostGator サーバーで LAMP セットアップに取り組んでいます。現在、より使いやすい URL を作成しようとしています。

次のようなアドレスを転送する必要があります。

http://usafarmtrader.com/posts/city-state/title-3869.htm

ここまで:

http://usafarmtrader.com/viewpost.php?id=3869

アドレスバーを変更せずに。私の現在の書き換えルールは次のようになります。

RewriteRule ^posts/(.*)/(.*)? http://usafarmtrader.com/viewpost.php?id=$2 [L,NC,P]

P フラグを追加することが、アドレスを変更せずにロードできる唯一の方法でしたが、JavaScript が壊れているようです。

jsを壊さずにこれを機能させるにはどうすればよいですか? そして、その変数にid(最後のダッシュの後のすべてである必要があります)を取得するために、書き換えルールの正規表現はどのように見えるべきですか?

何かが干渉している可能性がある場合に備えて、.htaccess ファイル全体を次に示します。

#RewriteCond %{REQUEST_URI} !^/js/.*$
#RewriteCond %{REQUEST_URI} !^/img/.*$
#RewriteCond %{REQUEST_URI} !^/css/.*$
#RewriteCond %{REQUEST_URI} !^/inc/.*$
#RewriteCond %{HTTP_HOST} ^usafarmtrader.com$
#RewriteRule !^down\.php$ http://usafarmtrader.com/down.php [R=302,L]

ErrorDocument 404 /index.php

RewriteEngine On

RewriteRule ^(js|img|fonts)/ - [L]

#RewriteRule ^posts/(.*)/(.*)? http://usafarmtrader.com/viewpost.php?id=$2 [L,NC,P]
RewriteRule ^posts/[^/]+/[^.]+-([0-9]+)\.html?$ http://usafarmtrader.com/viewpost.php?id=$1 [L,NC]

RewriteCond %{SERVER_PORT} 80
RewriteRule ^mylistings\.php|login\.php|myaccount\.php|newaccount\.php|reset\.php|newpost\.php|editpost\.php$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteCond %{SERVER_PORT} 443
RewriteRule ^about\.php|contact\.php|down\.php|faq\.php|find\.php|forgot\.php|home\.php|index\.php|viewpost\.php$ http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# Google Analytics Integration - Added by cPanel.
<IfModule mod_substitute.c>
AddOutputFilterByType SUBSTITUTE text/html
Substitute "s|(<script src='/google_analytics_auto.js'></script>)?</head>|<script src='/google_analytics_auto.js'></script></head>|i"
</IfModule>
# END Google Analytics Integration

# Use PHP 5.3
AddHandler application/x-httpd-php53 .php
4

1 に答える 1

1

Pこれはすべて同じサーバー上にあるため、フラグは必要ありません。プロキシする必要はありません。あなたのパターンは近いですが、URI のタイトル.htm部分にも一致します。次のようなものを試してください:

RewriteRule ^posts/[^/]+/[^.]+-([0-9]+)\.html?$ /viewpost.php?id=$1 [L,NC]
于 2013-08-07T17:45:05.370 に答える