我有两个不同的.htaccess文件,每个文件都做不同的事情,当我将它们组合起来时,它们将无法一起工作。
第一个允许我输入www.mydoman.com/test并将其表示www.mydomain.com/index.php?page=test
RewriteRule ^([A-Za-z0-9-_]+)/?$ index.php?subclass=$1 [NC,L]
RewriteRule ^.* index.php [NC,L]
第二个文件切断了.html和.php文件的扩展名,因此可以使用www.mydo.com/cout的www.mydo.com/cout.abp
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /cl_clone
## hide .php extension
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L,NC]
## To internally redirect /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [L]
# e.g. example.com/foo will display the contents of example.com/foo.html
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.+)$ $1.html [L,QSA]
有没有办法允许这两个在一个.htaccess文件中一起工作?
答案 0 :(得分:1)
您在顶部有一个重定向规则,然后是两组规则,用于在请求结束时添加php或html扩展名(如果存在此类文件)。然后你的另一条规则为index.php做了路由。
你需要做的一些事情。在任何一种情况下,您都有重写基础/cl_clone
,它似乎根本不起作用,因为您的网址在请求中没有cl_clone
(例如它们只是{ {1}},没有cl_clone)。
所以你可能想删除它。
否则,您只需在其他规则的最底部添加www.mydomain.com/about
路由规则即可。您可能需要添加额外的调整,可能:
index.php
或将RewriteRule ^([A-Za-z0-9-_]+)/?$ index.php?subclass=$1 [NC,L]
RewriteCond %{REQUEST_URI} !index.php
RewriteRule ^.* index.php [NC,L]
更改为RewriteBase /cl_clone