Я искал stackoverflow определенное решение и не мог найти то, которое зафиксировало мою ситуацию. Заранее спасибо за любую справку можно предложить. Ваше знание ценится.
Я решил принять, что контракт "преобразовывает" (в словах клиента) сайт Joomla в сайт WordPress. Все продвигается гладко, за исключением того, что сайт Joomla связывается с .html файлами, и в его навигации и в содержании 100 + сообщения.
Вместо того, чтобы пройти каждое сообщение один за другим и обновить ссылки или выполнить команду SQL для удаления ".html" из URL я решил оказать давление на .htaccess, которым я несколько доволен.
В WordPress мне включили пользовательские постоянные ссылки, и это следующие: / %category % / % постимени %
Вот пример того, на что похож один из старых URL в сообщениях:
http://the-site.com/category/the-webpage.html
Мне нужен htaccess файл, чтобы сказать веб-серверу удалять .html, таким образом, пользователь, после посещения "http://the-site.com/the-webpage.html" вместо этого отправляется в:
http://the-site.com/category/the-webpage
Я настраиваю тупики страницы для следования за именем файла страниц Joomla, таким образом, http://the-site.com/category/the-webpage будет работать.
Можно ли помочь мне обнаружить решение к удалению .html от URL, когда кто-то посещает сайт, даже если файл HTML не существует на сервере?
Вот то, как .htaccess файл смотрел, прежде чем я внес изменения:
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
Вот последний .htaccess файл по состоянию на Восточное 17:35:
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} \.html$
RewriteRule ^(.*)\.html$ $1 [R=301,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
Это будет работать для принудительного внешнего перенаправления на ваши новые URL-адреса, но это может быть не идеально для вашей ситуации. Я все еще пытаюсь понять, есть ли способ сохранить внутреннее перенаправление и обновить переменную, которую WordPress использует, чтобы определить, какую страницу обслуживать, но пока я не придумал ничего, что могло бы работать.
Весь .htaccess
:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} \.html$
RewriteRule ^(.*)\.html$ $1 [R=301,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
Вы хотите использовать перезапись URL
RewriteEngine On
RewriteRule ^(.*)\.html$ $1
Это должно сделать это. Он перепишет запрос на site.com/category/whatever.html на site.com/category/whatever. он не должен зависеть от наличия запрашиваемого файла.
<Directory /var/www/category>
RewriteEngine on
RewriteRule (.*)\.html$ /category/$1
</Directory>
Это формат для apache2.conf или файлов виртуальных хостов. Не уверен, что вы используете эту команду в .htaccess. Лучше позаботиться об этом в server conf, если это возможно, так как он разбирается только один раз, при запуске сервера, а htaccess разбирается при каждом запросе.