6

IIS7 で共有ホスティングを使用し、PHP をサポートしています。「きれいなURL」(index.phpを削除)でワードプレスブログを実行しようとしています。ホスティング プロバイダーは URLRewrite モジュールをインストールすることを望んでいないため、そのオプションは利用できません。パーマリンク URL から index.php を削除する wordpress 用のプラグインを見つけました。404 ページを index.php に変更するとうまくいくはずです...それも機能しません。

ASP.NET Web サイトの URL 書き換えについてはよく知っていますが、PHP ではどうすればよいかわかりません。ホスティングの設定は ASP.NET と PHP を同時にサポートしているようなので、ASP.NET を介して書き換えコードを実行することは可能だと思いますが、どうすればよいかわかりません。

誰かがこれを経験したり、最善のアプローチについて何か考えを持っていますか? 何かが私を正しい方向に導いたり、自分でそれを理解したりした場合は、コードを必要とする他の誰かのためにここで喜んで共有します.

4

3 に答える 3

5

ブログでManagedFusion Url Rewriterカスタム 404 エラー ページを使用しています。

ManagedFusion Url Rewriter には、.htaccess を模倣する ManagedFusion.Rewriter.rules というファイルが必要です。これを正しくするためにかなりいじる必要があったので、現在持っているものを含めます。

#  Managed Fusion Url Rewriter
#  http://managedfusion.com/products/url-rewriter/
#
#  Developed by: Nick Berardi
#       Support: support@managedfusion.com
#
RewriteEngine on

#
# Place Rules Below
#

# misc WordPress rewrites
RewriteRule ^/wp-login\.php$ /wp-login.php [L]
RewriteRule ^/wp-comments-post\.php$ /wp-comments-post.php [L]
RewriteRule ^/wp-admin/(.*)$ /wp-admin/$1 [L]

# deny access to evil robots site rippers offline browsers and other nasty scum
RewriteCond %{HTTP_USER_AGENT} ^Anarchie [OR]
RewriteCond %{HTTP_USER_AGENT} ^ASPSeek [OR]
RewriteCond %{HTTP_USER_AGENT} ^attach [OR]
RewriteCond %{HTTP_USER_AGENT} ^autoemailspider [OR]
RewriteCond %{HTTP_USER_AGENT} ^Xaldon\ WebSpider [OR]
RewriteCond %{HTTP_USER_AGENT} ^Xenu [OR]
RewriteCond %{HTTP_USER_AGENT} ^Zeus.*Webster [OR]
RewriteCond %{HTTP_USER_AGENT} ^Zeus
RewriteRule ^.* - [F,L]

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


# redirect old urls
RewriteRule ^/2008/12/blog-on-hold.html$ /2008/12/12/blog-on-hold/ [R=301]
RewriteRule ^/2008/11/google-chrome-wont-start-in-vista-x64\.html$ /2008/11/16/google-chrome-wont-start-in-vista-x64/ [R=301]
RewriteRule ^/2008/11/pass-community-summit-2008-events.html$ /2008/11/14/pass-community-summit-2008-events-calendar/ [R=301]
RewriteRule ^/2008/11/fort-stevens-camping-trip.html$ /2008/11/14/fort-stevens-camping-trip/ [R=301]
RewriteRule ^/2008/10/first-post.html$ /2008/10/10/first-post/ [R=301]
RewriteRule ^/blog/CommentView,guid,1d8cba50-0814-4c89-86df-eca669973e8e.aspx$ /2006/09/29/junctions-in-windows-vista/ [R=301]
RewriteRule ^/blog/2006/09/29/JunctionsInWindowsVista.aspx$ /2006/09/29/junctions-in-windows-vista/ [R=301]

# rewrite all nonexistent files and directories to use index.php for WordPress
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.php$1

ルールはプリティ URL を処理し、www を削除し、以前のブログからいくつかの古い URL をリダイレクトします。

カスタム 404 エラー ページとしてセットアップしたファイル "404.php" もあります。これはプリティ URL には必要ありませんが、カスタム テーマで wordpress 404 ページを使用できるようになります。内容は次のとおりです。

<?php
$qs = $_SERVER['QUERY_STRING'];
$pos = strrpos($qs, '://');
$pos = strpos($qs, '/', $pos + 4);
$_SERVER['REQUEST_URI'] = substr($qs, $pos);
$_SERVER['PATH_INFO'] = $_SERVER['REQUEST_URI'];
include('index.php');
?>

それが役立つことを願っています。これまでのところ、私にとっては非常にうまく機能しています。

-ロブ

更新: IIS7 で WordPress を使用した経験に関するブログ記事を投稿しました。

于 2008-12-31T23:13:36.490 に答える
0

404 ページを index.php に変更するとうまくいくはずです。そうでない場合、プラグインは IIS をサポートしていない可能性があります。

IIS には、.htaccess が Apache HTTPD で行うことを行う xml " web.config " ファイルがあります。(つまり、静的構成ファイルで Web サーバーの設定をオーバーライドします)。ASP.NET アプリケーションで広く使用されています。

IIS 7.0 の WordPress でカスタム エラーを有効にする をお読みください。 これでもうまくいかない場合は、サービス プロバイダーに設定を依頼してみてください。この設定は、IIS 管理コンソール GUI を介して構成できます。

于 2009-01-11T15:55:26.397 に答える