O sinal de adição de reutilização de url do Apache não está funcionando como esperado

1

Gostaria de reescrever o URL do meu site abaixo de dois padrões (note: há muitos desses URLs que eu espero usar uma regra para reescrevê-los todos)

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

para

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

todos os outros casos como http://www.hetaoblog.com/ não devem ser alterados;

Eu tentei

<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>

e

<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>

e

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

no entanto, eles trabalham para os meus dois casos desejados, mas eles reescreverão

www.hetaoblog.com/ 

para

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

Parece o sinal +, o que significa que pelo menos uma ocorrência não está acontecendo.

    
por hetaoblog 13.03.2012 / 00:58

3 respostas

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

Seu / está redirecionando, pois suas linhas RewriteCond não se aplicam à segunda regra.

Ainda não tenho certeza de como você determinou como estava reescrevendo para /myblogs/post/.jhtml - isso não faz sentido com as regras que você tem, no entanto.

O Wordpress ainda pode estar interferindo; ative um RewriteLog location e defina RewriteLogLevel 9 para que possamos confirmar se o Apache está se comportando corretamente.

    
por 13.03.2012 / 03:06
0

O mais simples é:

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

Isso corresponderá exatamente aos dois URIs especificados e nenhum outro.

    
por 13.03.2012 / 01:10
0

Você já tentou simplesmente:

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

Você também pode precisar especificar uma string de consulta de reescrita.

    
por 13.03.2012 / 04:03