#apache #.htaccess #redirect #mod-rewrite #url-rewriting
#apache #.htaccess #перенаправление #мод-перезапись #переписывание URL-адреса
Вопрос:
У меня есть веб-сайт в формате HTML, и у меня есть эта ссылка http://html-website.com/CA_NutritionIncentiveProgram.htm который я хотел бы перенаправить на https://wordpress-website.com/ca_nutritionincentiveprogram
У меня есть это в моем файле htaccess, но он не работает
<IfModule mod_rewrite.c>
# Redirect non WordPress pages to corresponding post
RewriteEngine On
RewriteBase /
RewriteRule ^/CA_NutritionIncentiveProgram/.htm$ https://wordpress-website.com/ca_nutritionincentiveprogram [R=301,L]
</IfModule>
Когда я загружаю этот HTML-сайт http://html-website.com/CA_NutritionIncentiveProgram.htm он перенаправляет меня на сайт WordPress, но с включенным .htm (https://wordpress-website.com/ca_nutritionincentiveprogram.htm )
Вот что я недавно получил (источник: RavinderSingh13)
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^html-website.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.html-website.com$
RewriteRule (.*)$ http://www.wordpress-website.com.com/$1 [R=301,L]
RewriteCond %{REQUEST_URI} ^/(ca_nutritionincentiveprogram)/?$ [NC]
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.*) http://%{HTTP_HOST}%{REQUEST_URI}.html [NE,L]
</IfModule>
Любая помощь
Ответ №1:
Ваше исходное правило в порядке и должно работать, если используется в server.config
контексте. Если вы хотите, чтобы он работал htaccess
, вам нужно удалить начальную косую черту, потому RewriteRule
что директива использует относительный путь (начинающийся без /) htaccess
.
<IfModule mod_rewrite.c>
# Redirect non WordPress pages to corresponding post
RewriteEngine On
RewriteBase /
RewriteRule ^CA_NutritionIncentiveProgram.htm$ https://theappliancejudge.co.uk/ca_nutritionincentiveprogram [R=301,L,NC]
</IfModule>
Комментарии:
1. @Amit Verma большое вам спасибо, это работает хорошо
2. @Amit Verma Теперь у меня проблема с PDF-файлами, как я могу перенаправить его, например, на новый сайт WordPress html-website.com/F2F_Strategic_Plan.pdf чтобы wordpress-website.com/wp-content/uploads/2020/12 /…
Ответ №2:
Не могли бы вы, пожалуйста, попробовать следующее, основываясь только на показанных вами образцах. Пожалуйста, убедитесь, что вы очистили кэш вашего браузера, прежде чем тестировать свои URL-адреса. Кроме того, вам не нужно указывать R=301
, что else перепишет этот URL-адрес в браузере на новый (который мы, очевидно, не хотим показывать пользователям).
RewriteEngine ON
RewriteCond %{REQUEST_URI} ^/(.*ca_nutritionincentiveprogram)/?$ [NC]
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.*) http://%{HTTP_HOST}/%1.html [NE,L]
Комментарии:
1. Привет, спасибо за помощь, но он все еще не работает, пожалуйста, посмотрите Мой отредактированный вопрос, я поместил туда то, что у меня есть, и добавил ваш код
2. @FrancisAlvinTan, не могли бы вы, пожалуйста, отправить мне пример URL-адреса, на который вы нажимаете? кстати, эти правила проверяют,
ca_nutritionincentiveprogram.html
присутствует ли он в вашем path или нет, если он присутствует, то только он перенаправит запрос в серверной части на него.3. есть ли здесь система сообщений в Stackoverflow?
4. @FrancisAlvinTan, вам не нужно указывать мне точный URL-адрес, просто попробуйте
http://localhost:80/bla_bla_bla_test
, как это будет нормально.5. @FrancisAlvinTan, не могли бы вы один раз проверить мое отредактированное решение, я внес в него небольшие изменения, пожалуйста, дайте мне знать, как это происходит, спасибо.