web-dev-qa-db-ja.com

wordpressパーマリンクが機能しない-htaccessは問題ないようですが、ページで404エラーが発生する

パーマリンク構造を/%postname%/に更新し、これにより.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

しかし、それでもページに404エラーが表示されます。変更する必要がある他の設定はありますか?

編集:Apacheログがパーマリンクされたフォルダーを直接検索しているように見える場合に役立ちます。つまり:

[Wed Oct 16 11:12:32 2013] [error] [client xx.xx.xx.xxx] File does not exist: /var/www/exampledomain/news, referer: http://exampledomain.com/
32
babbaggeii

このページに着陸する他の人のために-別の問題は(WebサーバーとしてApacheを使用している場合)、httpd.confまたはsites-available/sitename.confファイルを編集する必要があることです。

Webディレクトリでは、.htaccessファイルがその設定を上書きできるようにする必要があります。

ファイルでウェブディレクトリを探してください-それはconfファイルの大部分にあるか、VirtualHostセクションに分離されます。

<Directory /path/to/site>
     #add the following setting to allow .htaccess in your web dir to work
     AllowOverride FileInfo

     #other settings ---

</Directory>

これにより、WordPress内でWordPress URLを自由に設定できます。

***編集済み-nietonfir、更新ありがとうございます。最初は最小限の特権を使用してください。これが機能しない場合は、AllowOverride FileInfo with AllowOverride All

73
MTLHD777

書き換えルールの機能を妨げる複数のことがあります。私のubuntuサーバーには、パーマリンクを機能させるために3つの変更が必要でした。

Apache2の新しいバージョンでは、モジュールを有効にする必要があります。

Sudo a2enmod rewrite
Sudo service Apache2 restart

Apache2.confファイルを変更する必要がある場合もあります。

Sudo nano /etc/Apache2/Apache2.conf

WebディレクトリオーバーライドルールをAllowOverride Allに変更します。

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

その後、サービスを再度再起動します。

WordPressインストールディレクトリの.htaccessファイルは、ウェブサーバーが所有するか、読み取り可能/変更可能にする必要があります。

これは、所有者をwww-data(通常はwebserverユーザー)に変更するか、権限を変更することで実現できます。

Sudo chown www-data /var/www/wordpress-install/.htaccess 

OR

Sudo chmod 664 /var/www/wordpress-install/.htaccess

Wordpress adminバックエンドにログインし、パーマリンクの設定を保存すると、うまくいくはずです。

41
gan

これは解決されました。 mod_rewriteを有効にしていませんでした。だから私はこれをやった:

$ Sudo a2enmod rewrite
Enabling module rewrite.
To activate the new configuration, you need to run:
  service Apache2 restart
$ service Apache2 restart
 * Restarting web server Apache2                                                                              
28
babbaggeii

Apacheに.htaccessファイルを追跡するように指示します。これを行うには、Apache.confファイルを編集します。

$Sudo nano /etc/Apache2/Apache.conf

行までスクロールします。デフォルトでは次のようになります。

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

allowOverrideの値をAllに変更すると、次のようになります。

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

Ctrl + xを押し、yを押して構成ファイルを保存します。サーバーにこの変更を加えるには、まずmod_rewrite byを有効にします。

$ Sudo a2enmod rewrite

そして、サーバーを再起動します

$ Sudo service Apache2 restart

できた!

ソース: https://www.wst.space/riddling-with-wordpress-permalink-setup-issues/

8

以下の.htaccessコードを使用して、プロジェクト名(wwwディレクトリにあります)を以下のコードに入れるだけです

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

# END WordPress

ありがとう

6
Krunal Shah

これがあなたの問題を説明しているかどうかを確認するもう一つのこと:

  • htaccessとmod_rewriteが正しくセットアップされている
  • 404エラーはパーマリンクによって異なりますが、他のパーマリンクではありません

Wordpressパーマリンクに一致する名前を持つWordpressインストールと同じフォルダーに既存の.phpファイルまたはディレクトリがないことを確認してください。

たとえば、次のWordpressページのパーマリンクがある場合:

 example.com/name_one/
 example.com/name_two/

Wordpressインストールを含むディレクトリには次のファイルが含まれます。

 name_one.php

これが結果になります:

さらに重要なことに、2番目のURLはname_one.phpを実行する代わりに404を返します。これは、誤って記述された.htaccessと同じ症状を引き起こす可能性があるため、この問題の診断が難しいことを意味しますファイル。

0
Rick Gladwin

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

詳細については、パーマリンクの問題の修正

0
khurram

私は同じ問題に直面していましたが、もう一つ探すべきことがありました。

wordpressパーマリンクが正しく機能するために必要なことは次のとおりです。

  1. wordpressディレクトリ内のファイルとフォルダに適切な許可モードがあることを確認してください。
    Sudo find . -type f -exec chmod 644 {} +
    Sudo find . -type d -exec chmod 755 {} +

  2. パーマリンク構造の場合は、mode_rewriteはApacheで有効になっています。
    Sudo a2enmod rewrite
    Sudo service Apache2 restart

0
ganchclub

さらに別の可能性:macOSを更新しました常に Apache構成ファイルを台無しにします。とりわけ、mod_rewriteモジュールを再度有効にする必要がありました。次の行を見つけます、

#LoadModule rewrite_module libexec/Apache2/mod_rewrite.so

そして、ハッシュを削除して、

LoadModule rewrite_module libexec/Apache2/mod_rewrite.so
0
Jeff

ubuntuで新しいサイトまたはクローンサイトをセットアップしている場合/etc/Apache2/sites-available/your-file.confから/etc/Apache2/sites-enabledフォルダ。Apacheがロードします。


ただ走れ: Sudo a2ensite your-file.conf、次にSudo service Apache2 reload

Sudo a2dissite your-file.confシンボリックリンクを削除します。つまり、設定を無効にします。

0
Magnus