Параметры URL WordPress в GoDaddy

#php #wordpress #mod-rewrite

#php #wordpress #мод-перезапись

Вопрос:

В настоящее время я создаю веб-сайт (http://tannernelson.me/ehs )

Он размещен на Godaddy, и я использую WordPress в качестве CMS.

Я хочу иметь возможность создавать:

 http://tannernelson.me/ehs/school/academics/teachers/jsmith
  

превратиться в

 http://tannernelson.me/ehs/index.php?pagename=teachersamp;detail=jsmith
  

Итак, в принципе, если в URL есть 4 сегмента (школа / академики / учителя / jsmith) Я хочу, чтобы последний параметр был переменной. Таким образом, четвертым сегментом любого URL-адреса будет переменная «detail»

Мой текущий URL переписан в настоящее время

 # Mod Rewrite
Options  FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /ehs/index.php [L]
Options -Multiviews
  

Это не будет работать никаким другим способом, даже с файлом WordPress .htaccess по умолчанию. И я понятия не имею, что это значит, или какой URI запроса сделан из этого. Это действительно сбивает с толку.

Есть идеи?

Ответ №1:

Код, который у вас есть прямо сейчас, означает:

 RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
  

Если запрошенное имя файла не ( ! ) является обычным файлом -f и если запрошенное имя файла не ( ! ) является каталогом -d , то:

 RewriteRule . /ehs/index.php [L]
  

Сопоставьте любой отдельный символ ( . ), и если совпадение найдено, перепишите URL на /ehs/index.php , а затем сделайте это последним правилом ( [L] ), поэтому не обрабатывайте никаких дальнейших правил.

Это не похоже на то, что вы хотите, но, похоже, работает. http://tannernelson.me/ehs/school/academics/teachers/jsmith отображается (я думаю) http://tannernelson.me/ehs/index.php , потому что я получаю пользовательскую страницу 404 not found.

Попробуйте следующий .htaccess код:

 Options  FollowSymLinks
RewriteEngine On
RewriteBase /

# Redirect the ehs/school/academics/$1/$2 URIs to /ehs/index.php?pagename=$1amp;detail=$2
RewriteRule ^ehs/school/academics/([^/] )/([^/] )$ /ehs/index.php?pagename=$1amp;detail=$2 [L]

# Otherwise if the requested URI is not found (not a file nor a directory)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

#Redirect everything else to index.php
RewriteRule .* /ehs/index.php [L]

Options -Multiviews
  

Я только что протестировал это на своем сервере Apache, и это работает.