Я хотел бы переписать 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 и никаким другим.