Назад | Перейти на главную страницу

Перезапись URL-адреса Apache плюс знак не работает должным образом

Я хотел бы переписать URL-адрес моего сайта из двух нижеприведенных шаблонов (обратите внимание: есть много таких URL-адресов, которые я надеюсь использовать одно правило, чтобы переписать их все)

www.hetaoblog.com/hello
www.hetaoblog.com/hello/

к

**www.hetaoblog.com/myblogs/post/hello.jhtml**

все другие случаи как http://www.hetaoblog.com/ не следует менять;

я пробовал

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  #RewriteRule . /index.php [L]
  RewriteRule ^([^/]+)/$ /myblogs/post/$1.jhtml [L]
  RewriteRule ^(.*)$ /myblogs/post/$1.jhtml [L]
</IfModule>

и

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  #RewriteRule . /index.php [L]
  RewriteRule ^(.+)/$ /myblogs/post/$1.jhtml [L]
  RewriteRule ^(.*)$ /myblogs/post/$1.jhtml [L]
</IfModule>

и

RewriteRule ^([^/]+)+/$ /myblogs/post/$1.jhtml [L]

однако они работают для двух разыскиваемых мной случаев, но оба они перепишут

www.hetaoblog.com/ 

к

www.hetaoblog.com/myblogs/post/.jhtml

Похоже на знак +, который должен означать, что по крайней мере одно событие не произошло.

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/?$ /myblogs/post/$1.jhtml [L]

Ваш / перенаправляет, поскольку ваш RewriteCond линии не относятся ко второму правилу.

Я до сих пор не понимаю, как вы определили, как он переписывался на /myblogs/post/.jhtml - хотя это не имеет никакого смысла с вашими правилами.

Wordpress все еще может мешать; включить RewriteLog расположение и набор RewriteLogLevel 9 чтобы мы могли подтвердить, что Apache ведет себя правильно.

Вы просто пробовали:

RewriteRule ^/([A-Za-z0-9]+|[A-Za-z0-9]+/)$ /myblogs/post/$1.jhtml [L]

Вам также может потребоваться указать строку запроса rewritecond.

Самый простой из них:

RewriteRule /hello/? /hello.jhtml [L]

Это будет точно соответствовать двум указанным вами URI и никаким другим.