我的mod_rewrite有问题。
我想在标题中重定向这些URI。我使用以下规则
RewriteEngine on
RewriteCond $1 !^(folders not to be redirected e.g. css|images)
RewriteCond $1 !^(.*).(file extension e.g. png|css|txt|php)
RewriteRule ^(.*)$ index.php?id=$1 [L]
只有当我将所有资源放在一个文件夹中时它才有用,否则它会告诉我:
"/foo/index.php" not found.
所以要解决这个问题,我把所有资源放在文件夹“www”
中但是当我尝试从例如子文件夹加载资源时“foo”它告诉我:
The requested URL "/foo/foo2" was not found on this server.
如何从“/ foo / foo2”甚至“/ foo / foo2 / foo3”等子文件夹加载资源?
如何在文件夹中自动搜索index.php来解决问题?
答案 0 :(得分:1)
我相信您可以使用以下方法来达到您想要的效果。它不会按文件扩展名进行筛选,而是检查文件是否确实存在。有一点不同的是它首先在你的链接上添加一个斜杠,这是你可能不想要的。
RewriteEngine on
RewriteBase /
# This appends a trailing slash. You will have to update http://so with your domain.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://so/$1/ [L,R=301]
# This does the internal redirect
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)/$ /index.php?id=$1 [L]
如果您不想使用拖尾斜杠,可以使用以下
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.php?id=$1 [L]