如果子文件夹中存在页面,则重写URL

时间:2014-01-22 11:14:40

标签: regex apache .htaccess mod-rewrite

我想知道是否有办法实现这种URL重写;

RewriteRule ^example-link-1?$ /blog/example-link-1 [NC,L]
RewriteRule ^example-link-2?$ /blog/example-link-2 [NC,L]
RewriteRule ^example-link-3?$ /blog/example-link-3 [NC,L]
RewriteRule ^example-link-4?$ /blog/example-link-4 [NC,L]

您可以直接转到example.com/example-link-1等链接,但实际上您显示的是来自example.com/blog/example-link-1的内容,但我不需要为每个页面添加新规则。在htaccess中有没有动态的方法呢?即;

如果存在('blog /'+ pageURI) 然后重写为'blog /'+ pageURI,但保留uri没有'blog /'。

1 个答案:

答案 0 :(得分:1)

确定你能做到:

RewriteRule ^(example-link-[1234])/?$ /blog/$1 [NC,L]

以上4条规则。但总的来说,你可以这样做:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/blog/$1 -f
RewriteRule ^(.+?)/?$ /blog/$1 [NC,L]

如果存在/blog/something,则会重写为/blog/something,同时保留不含/blog/的相同URI。