htaccess URL美化:保留非html / php路径

时间:2016-09-20 00:56:12

标签: .htaccess mod-rewrite

我正在尝试将所有.html和.php文件显示为目录路径,例如

www.domain.com/path/page.html将显示为www.domain.com/path/page /.

我的微弱尝试,基于几个小时的搜索和阅读 - 编辑:做了一些改变行为的改变。

# Rewrite to pretty URL
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
RewriteCond %{REQUEST_URI} .*\.(html|php)
RewriteRule ^(\S+\/)*(\S+)\.html$ $1$2/ 

第一条规则现在将http://www.domain.com/index.html重定向到http://www.domain.com/index/,这是所需的行为。 第二条规则启用后会产生500响应。

# Redirect to actual file
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
RewriteRule ^(\S+\/)*(\S+)\/$ $1$2.html

第一个规则尝试匹配整个路径,然后匹配文件,将其重写为目录格式。

第二次尝试读取目录格式并将其发送到相应的文件。我要死了。两者都没有用,我只是输了。

编辑:当我直接导航到文件夹格式时,它会执行某些操作,但也会对所有css,js和img资源请求添加/ index /,因此它看起来不对。它还会为页面上的所有链接添加/ index /,这会产生404 ...

编辑:这是我的完整htaccess文件供参考。没有什么不同寻常的。

AddType application/x-httpd-php .html .htm

# Prevent Directoy listing 
Options -Indexes

# Prevent Direct Access to files
<FilesMatch "(?i)((\.tpl|\.ini|\.log|(?<!robots)\.txt))">
 Order deny,allow
 Deny from all
</FilesMatch>

# SEO URL Settings
RewriteEngine On
RewriteBase /

# Redirects requests for my images to a bad image
RewriteCond %{HTTP_REFERER} !^https?://(.+\.)?domain\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule .*\.(jpe?g|gif|bmp|png|jpg)$ /image/catalog/theft_prevention.jpe [L]

# Redirects non-www to www
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# serve custom error pages
ErrorDocument 400 /error-400.html
ErrorDocument 401 /error-401.html
ErrorDocument 403 /error-403.html
ErrorDocument 404 /error-404.html
ErrorDocument 410 /error-410.html
ErrorDocument 500 /error-500.html

# Rewrite to pretty URL
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
RewriteCond %{REQUEST_URI} .*\.(html|php)
RewriteRule ^(\S+\/)*(\S+)\.html$ $1$2/ [R=301, L]

# Redirect to actual file
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
RewriteRule ^(\S+\/)*(\S+)\/$ $1$2.html [R=301, L]

0 个答案:

没有答案