Сайт WordPress в разработке. Цель состоит в том, чтобы взять то, что выглядит как постоянные ссылки (но не так), передать соответствующие биты на статическую страницу через параметры URL.
Прямой тест работы статических страниц (простите за незаконченный вывод):
http://test.cynical.ws/display-murphy/?cynical_id=_Computing's_7th_law
Общий URL для этой страницы должен быть:
У меня есть RewriteRule, но оно не работает:
RewriteRule ^murphyism/(.*)$ display-murphy/?cynical_id=$1
Поскольку прямой доступ к статической странице не вызывает ошибки, я сомневаюсь, что это связано с одинарной кавычкой (а в базе данных, из которой мы ищем контент, есть много кетов с одинарными кавычками).
Я пробовал различные флаги RewriteRule (например, [L]) без каких-либо изменений в поведении.
Вот полный файл htaccess:
RewriteEngine on
RewriteRule ^murphyism/(.*)$ display-murphy/?cynical_id=$1
# 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
Ух ты! Это помогло. Большое спасибо. Что я упустил из комбинации флагов, которые устранили проблему?
Еще одно: как сохранить исходный URL-адрес в адресной строке браузера? Формат "slug" намного лучше для целей совместного использования, чем полный URL-адрес "display-murphy ...".
Конечно, я вставил это в свой ответ.

Что касается RewriteRule, как обсуждалось, используйте:
RewriteRule ^murphyism/(.*)$ display-murphy/?cynical_id=$1 [NE,R,L]
Важной частью здесь является NE|noescape, поскольку целевой URL-адрес содержит фрагмент. Вам необходимо использовать флаг NE, чтобы избежать проблем с экранированием URL
Что касается перезаписи без перенаправления, для этого необходимо включить mod_proxy и mod_rewrite в httpd.conf Apache.
Тогда перезапись должна выглядеть так:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteRule ^murphyism/(.*)$ display-murphy/?cynical_id=$1 [NC,NE,L]
Справка:
Спасибо и извините за поздний ответ. Похоже, что приведенный выше пример относится к другому сайту + условие (в основном удаление / en / из URL-адреса). Итак, догадавшись, я составил следующее. Ни оставшееся RewriteRule, ни закомментированное не работали. RewriteCond% {REQUEST_URI} ^ / murphyism $ RewriteRule ^ murphyism /(.*)$ display-murphy /? Cynical_id = $ 1 [NC, L] #RewriteRule ^ (. *) Display-murphy /? Cynical_id = $ 1 [NC, L ]
Извините, только что понял, что перепутал NC и NE. Обновленный ответ. Используйте новый браузер и режим инкогнито, чтобы попробовать обновленное правило.
Еще раз спасибо. 1) Это действительно сохраняет исходный URL-адрес в браузере (хотя кто-то указал, что флаг QSA делает то же самое). 2) Большая проблема остается в Wordpress. Он удаляет любые одинарные кавычки, что приводит к сбою поиска в базе данных. Я еще не нашел способа (кроме взлома основного кода Wordpress), чтобы он этого не делал.
Попробуйте вот так:
RewriteRule ^murphyism/(.*)$ display-murphy/?cynical_id=$1 [NC,R,L]