2011-10-10 14 views
2

使用模板我有这样的.htaccess mod_rewrite的代码,使我的网址漂亮:的.htaccess mod_rewrite的豁免

<IfModule mod_rewrite.c> 
RewriteEngine On 

RewriteRule ^posts.php$ posts.php [L] 

# Rewrite www to no-www domain 
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] 
RewriteRule .* http://%1%{REQUEST_URI} [R=301,L] 

# Rewrite multiple slashes with single slash after domain 
RewriteCond %{THE_REQUEST} ^[A-Z]+\s//+(.*)\sHTTP/[0-9.]+$ [OR] 
RewriteCond %{THE_REQUEST} ^[A-Z]+\s(.*/)/+\sHTTP/[0-9.]+$ 
RewriteRule .* http://%{HTTP_HOST}/%1 [R=301,L,NE] 

# Rewrite multiple slashes with single slash in URL 
RewriteCond %{REQUEST_URI} ^(.*)//(.*)$ 
RewriteRule . %1/%2 [R=301,NE,L] 

# Remove slash from URL end 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} ^(.+)/$ 
RewriteRule ^.+/$ %1 [R=301,NE,L] 

# Rewrite backslash with slash 
## Works on FF with using AllowEncodedSlashes On in content/httpd.conf 
RewriteCond %{REQUEST_URI} ^(.*)\\(.*)$ 
RewriteRule .* %1/%2 [R=301,NC,L] 

# Rewrite query string, Ajax crawling 
RewriteCond %{QUERY_STRING} ^_escaped_fragment_=(.*)$ 
RewriteRule .*$ %{REQUEST_URI}%1? [R=301,L] 
RewriteCond %{QUERY_STRING} ^.+$ 
RewriteCond %{QUERY_STRING} !^url= 
RewriteCond %{QUERY_STRING} !api 
RewriteRule .*$ %{REQUEST_URI}? [R=301,L] 

# Rewrite space with dash 
RewriteCond %{REQUEST_URI} ^([^\ ]*)\ (.*)$ 
RewriteRule .* %1-%2 [R=301,L] 

# Rewrite underscore with dash 
RewriteCond %{REQUEST_URI} ^([^\_]*)\_(.*)$ 
RewriteRule .* %1-%2 [R=301,L] 

# Remove dot 
RewriteCond %{REQUEST_URI} ^([^\.]*)\.(.*)$ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule .* %1%2 [R=301,L] 

# Remove comma 
RewriteCond %{REQUEST_URI} ^([^\,]*)\,(.*)$ 
RewriteRule .* %1%2 [R=301,L] 

# Remove dash before slash 
RewriteCond %{REQUEST_URI} ^(.*)\-/(.*)$ 
RewriteRule ^(.*)\-/(.*)$ %1/%2 [R=301,L] 

# Remove dash after slash 
RewriteCond %{REQUEST_URI} ^(^\.)\/-(.*)$ 
RewriteRule ^(.*)\/-(.*)$ %1/%2 [R=301,L] 

# Remove .php extension 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+/)*[^.]+\.php(\?[^\ ]*)?\ HTTP/ [NC] 
RewriteRule ^(([^/]+/)*[^.]+)\.php$ http://%{HTTP_HOST}/%1$1 [R=301,L] 

# Rewrite uppercase letter URL to lowercase with content/httpd.conf RewriteMap lc int:tolower 
## Solution without httpd.conf RewriteMap in github.com/laukstein/ajax-seo/wiki/Lowercase-URL 
RewriteCond %{REQUEST_URI} .+ 
RewriteRule ^[^A-Z]*[A-Z] ${lc:%0} [R=301,L] 

# Block folder access that begins with a period (like .git, .svn) 
RewriteRule "(^|/)\." - [F] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^api/?([^\./]*)$ ?api&url=$1 [L,QSA] 
RewriteRule ^([^.]*)$ ?url=$1 [L,QSA] 

RewriteRule .* - [E=HTTP_IF_MODIFIED_SINCE:%{HTTP:If-Modified-Since}] 
RewriteRule .* - [E=HTTP_IF_NONE_MATCH:%{HTTP:If-None-Match}] 

我已经成功地创建豁免,允许posts.php文件被访问 - 但我无法知道如何让我的页面访问存储在/ uploads /路径中的所有图像。

非常感谢,迈克

+0

等一下。 .htaccess处理您的**传入** SEO格式的URI并将它们转换为服务器和脚本语言(例如PHP)可以处理的动态非SEO格式。您的代码看起来像是在尝试将_outgoing_ links _to_SEO格式转换,这是行不通的。你究竟想要做什么? –

回答

3

使用-当你不想要的URL重写。这个规则在您的文件的顶部(或任何其他规则,你想先处理)将做的伎俩:

RewriteRule ^uploads/ - [L] 
+0

完美 - 谢谢 –