web-dev-qa-db-ja.com

投稿名がパーマリンクのHTTP404

さて、このサイトの最初のページを作成しました。デフォルトのパーマリンク設定を使用すると機能します。

投稿名を使用するようにパーマリンク設定を変更すると、HTTP404が取得されます。

何がうまくいかなかったのか、何かが壊れたのかわかりません。誰かが私が修正するのを手伝ってもらえますか?

このサイトはApacheでホストされています。

Page exists, link is broken

13
Ortund

XAMPPまたはMAMPを使用していますか? WordPress Codex: パーマリンクの問題の修正

XAMPPのユーザー(Windows):XAMPPの一部のバージョンでは、デフォルトでmod_rewriteが有効になっていません(Apacheでコンパイルされていますが)。それを有効にするには—したがってWordPressできれいなパーマリンクを作成するために必要な.htaccessファイルを書き込む)を有効にするには— Apache/conf/httpd.confを開き、LoadModule rewrite_module modules /mod_rewrite.soのコメントを外す必要があります(つまり、行の先頭にあるハッシュ/ポンド記号を削除します)。

WAMPのユーザー(Windows):WAMPの一部のバージョン(すべてのバージョン?)は、デフォルトでmod_rewriteを有効にしないか、シンボリックリンクのフォローを許可しません。必要な機能を有効にするには、Apache/conf/httpd.confファイルに移動し、テキストエディターで開いて、LoadModule rewrite_module modules/mod_rewrite.soの行のコメントを解除します(つまり、行の先頭にあるハッシュ/ポンド記号を削除します)。次に、同じファイルのさらに下に、「OptionsFollowSymlinks」という行で始まるセクションがあります。そのセクションの2行目を「AllowOverridenone」からAllowOverrideallに変更します。編集したhttpd.confを保存し、すべてのWAMPモジュールを再起動します。これでパーマリンクが機能するはずです。

サンドボックスにmod_rewriteがない場合は、 mod_rewriteなしのパーマリンク も表示される場合があります。

Apache

Apacheを使用している場合、パーマリンクの破損には通常、他に2つの原因があります。.htaccessが生成されていない(権限設定のため)か、ApacheのAllowOverrideディレクティブが有効になっていない。

まず、サーバーにSSHで接続した場合、ルートに生成された.htaccessファイルが表示されますか?そうでない場合、WordPressはそのファイルを書き込む権限を持っていない可能性があります。ファイルが存在する可能性もありますが、 WordPress編集できません。どちらの場合も、そのファイルを chmod 666に(存在しない場合は作成して)作成できます。

次に、Apache構成に次の設定があることを確認します。

  <Directory />
    Options FollowSymLinks
    AllowOverride All
 </Directory>

最後に、WordPressコーデックス)の パーマリンクの問題の修正 セクションを読んでください。パーマリンクが機能しない理由については、他にもいくつかのヒントや提案があります。

26
Jared Cobb

私の場合、最初にWebサイトのルートフォルダー内の.htaccessファイルを更新する必要がありました。

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

WordPressは、書き込み権限がある場合、これを自動的に行います。それ以外の場合は、書き込みができないと文句を言い、上記のコードサンプルを提供して、.htaccessを手動で更新できるようにします。

その後、Apache2.confファイルを編集しました。 Linuxでは、/etc/Apache2/Apache2.confにあり、次のようなセクションがあります。

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

AllowOverride NoneAllowOverride FileInfoに変更します。

最後に、次のコマンドを実行します。

Sudo a2enmod rewrite
service Apache2 restart

これらのすべてのステップは、機能するために必要でした。

8
Alisson

別のサイトでこの投稿を見つけて、すでに多くの人々を助けました

私はついに問題を解決することができました!解決策:カスタムパーマリンク構造を使用していました http://kyl.fi/%category%/%postname%/ 。末尾のスラッシュ(つまり最後の/)と出来上がりを削除しました。ただし、以前は問題なく末尾にスラッシュが付いたパーマリンク構造を使用したと確信しているので、まだ混乱しており、誰かが説明を持っていれば、この問題についてもっと知りたいと思います。

すべての標準パーマリンクには、末尾に/があります。

1
wim cosse

テスト済みの実用的なソリューション:

たとえば、Apache2構成ファイル内:

/etc/Apache2/sites-enabled/000-default.confまたはmysite.confなど。

Paramを設定し、空ではないことを確認してください:ServerName www.example.com or 123.212.333.111

また、以下のようにディレクトリルールを設定していることを確認してください(書き換えルールが.htaccessで有効になっていない可能性があるため、ここに配置して、.htaccessが機能しない理由を調べてみてください 。htaccessがApacheで機能しない )::

<Directory /var/www/html>
       Options Indexes FollowSymLinks MultiViews
       AllowOverride All
       Order allow,deny
       allow from all

       RewriteEngine On
       RewriteBase /
       RewriteRule ^index\.php$ - [L]
       RewriteCond %{REQUEST_FILENAME} !-f
       RewriteCond %{REQUEST_FILENAME} !-d
       RewriteRule . /index.php [L]
</Directory>
0
Dung

私の場合、WordPressインストールでNGINXWebブラウザーを使用しています。修正は、次のコードスニペットをNGINXディレクティブに追加することです。

location / { try_files $uri $uri/ /index.php?$args; } # Add trailing slash to */wp-admin requests. rewrite /wp-admin$ $scheme://$Host$uri/ permanent; location ~* \.(jpg|jpeg|png|gif|css|js|ico)$ { expires max; log_not_found off; }

優れた(オープンソースの)ISPconfig.org CPanel代替品を使用している場合は、[サイト]ページに移動し、[オプション]タブで、上記のNGINXディレクティブのコードスニペットを入力します。 ISPconfigには、[オプション]タブからすばやくアクセスできる一般的なコードスニペットを追加する機能があります。

上記の修正を行った後、WordPressのパーマリンクオプションのいずれかを使用することができました。

0
Petr

2ポイントチェックである必要があります:1。htaccessファイルにコードを追加します。

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
  1. そして、.htaccessファイルの許可は次のようになります:644
0
Amir Goodarzi