我从来没有使用mod_rewrite
之前,所以我跟我的用例建立一个适当的规则挣扎。的mod_rewrite如果子目录中的文件不存在
我有一个网址寻找这样的:domain.com/pict/123456
目录结构像这样:
/pict/ |-- autogenerated/ |-- 12345.png |-- 87654.png |-- gen.php |-- .htaccess
什么,我想实现的是:
如果12345.png
不存在autogenerated
, 重写网址为gen.php?id=12345
else else autogenerated/12345.png
文件
我曾尝试在互联网上找到各种解决方案(以及大多数答案#1的 - 都无济于事)。
我.htaccess
文件看起来像这样:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond autogenerated/%{REQUEST_FILENAME}.png -f
RewriteRule ^(.+)$ autogenerated/$1.png [L]
RewriteRule ^(.*)$ generate.php?id=$1 [QSA,L]
</IfModule>
我也试图改变RewriteCond
像这样:
RewriteCond autogenerated/$1.png -f
RewriteCond autogenerated/%{REQUEST_URI}.png -f
RewriteCond %{DOCUMENT_ROOT}/autogenerated/%{REQUEST_FILENAME}.png -f
RewriteCond %{DOCUMENT_ROOT}/autogenerated/$1.png -f
RewriteCond %{DOCUMENT_ROOT}/pict/autogenerated/%{REQUEST_FILENAME}.png -f
RewriteCond %{DOCUMENT_ROOT}/pict/autogenerated/$1.png -f
而且无论我做什么,第一重写规则从未触发,一切都被发送到gen.php
我在这里缺少什么?
两个REQUEST_FILENAME和REQUEST_URI包含路径信息。 //你的htaccess文件位于根目录或pict文件夹中? – CBroe
哦。我认为REQUEST_FILENAME只包含最后经过什么是“/” 我'htaccess'文件是内部“PICT”文件夹 – Tomaski