パーマリンク構造を/%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/
このページに着陸する他の人のために-別の問題は(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
書き換えルールの機能を妨げる複数のことがあります。私の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バックエンドにログインし、パーマリンクの設定を保存すると、うまくいくはずです。
これは解決されました。 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
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/
以下の.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
ありがとう
これがあなたの問題を説明しているかどうかを確認するもう一つのこと:
Wordpressパーマリンクに一致する名前を持つWordpressインストールと同じフォルダーに既存の.phpファイルまたはディレクトリがないことを確認してください。
たとえば、次のWordpressページのパーマリンクがある場合:
example.com/name_one/
example.com/name_two/
Wordpressインストールを含むディレクトリには次のファイルが含まれます。
name_one.php
これが結果になります:
さらに重要なことに、2番目のURLはname_one.phpを実行する代わりに404を返します。これは、誤って記述された.htaccessと同じ症状を引き起こす可能性があるため、この問題の診断が難しいことを意味しますファイル。
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モジュールを再起動します。これでパーマリンクが機能するはずです。
私は同じ問題に直面していましたが、もう一つ探すべきことがありました。
wordpressパーマリンクが正しく機能するために必要なことは次のとおりです。
wordpressディレクトリ内のファイルとフォルダに適切な許可モードがあることを確認してください。Sudo find . -type f -exec chmod 644 {} +
Sudo find . -type d -exec chmod 755 {} +
パーマリンク構造の場合は、mode_rewrite
はApacheで有効になっています。Sudo a2enmod rewrite
Sudo service Apache2 restart
さらに別の可能性:macOSを更新しました常に Apache構成ファイルを台無しにします。とりわけ、mod_rewrite
モジュールを再度有効にする必要がありました。次の行を見つけます、
#LoadModule rewrite_module libexec/Apache2/mod_rewrite.so
そして、ハッシュを削除して、
LoadModule rewrite_module libexec/Apache2/mod_rewrite.so
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
シンボリックリンクを削除します。つまり、設定を無効にします。