example.com/profile/?name=john
にexample.com/profile/john/
のようなよりきれいなURLでアクセスできるように私は私のウェブサイトを作成しようとしています。
$_GET["name"]
にアクセスできるように動作していますが、404
ページが表示されます。私のパーマリンクは/%postname%/
に設定されており、$_GET
を使ってプロファイル名にアクセスするだけです。プロファイル名は作者のようにWordPressとは関係ありません。
404
ページを返さずにこれを実行することが可能かどうか、また、可能であればどのようにしてそれを実行できるのかと思います。私の現在の.htaccess
コードは以下の通りです:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^profile/([^/]*)/$ /profile/?name=$1 [L]
</IfModule>
# 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
試みているカスタムルールは基準を満たしていません。これは気の利いた オンライン.htaccess
テスター ツールで、書き換えロジックを確認するためのものです。
代わりにフォローRewriteRule
を使用してください。
RewriteCond %{QUERY_STRING} (^|&)name=(.*)
RewriteRule ^(.*)$ /profile/%2/? [R=301,L]
最初の行の^example\.com$
を実際のドメインに置き換えてください。
WordPressによって作成された<IfModule mod_rewrite.c>
タグに埋め込むこともできます。これは、最終結果として次のようになります。
# 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]
# BEGIN Custom Rules
RewriteCond %{QUERY_STRING} (^|&)name=(.*)
RewriteRule ^(.*)$ /profile/%2/? [R=301,L]
</IfModule>
# END Custom Rules
# END WordPress