我有以下挑战,我有网站页面的友好网址:
/ subdir1 / subdir2 / UNIQUEID /
有些页面可以缓存为html(不是全部),所以我们将它们缓存在文件夹中的html文件中:
/cache/uniqueID.html
所以我需要只显示这些页面,如果它们存在于基于友好网址的缓存中,我的htaccess:
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME}([a-z0-9]+)/([a-z0-9]+)/([0-9]+)/$ !-f
RewriteCond %{DOCUMENT_ROOT}/cache/$3.html -f [NC]
RewriteRule ([a-z0-9]+)/([a-z0-9]+)/([0-9]+)/$ /cache/$3.html [L]
这有效,但有2个问题: 1)如果一个子目录名称有一个" - "或" _"不会工作。 2)如果最后" /"不存在不会工作。
此外,我不是一个regexpr精明,所以肯定有更好的方法来做到这一点,任何帮助真的很感激。 谢谢
答案 0 :(得分:0)
你需要调整你的正则表达式以允许连字符和&下划线。同时删除多余的RewriteCond
:
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L,NC]
RewriteCond %{DOCUMENT_ROOT}/cache/$3\.html -f [NC]
RewriteRule ^([\w-]+)/([\w-]+)/([\w-]+)/?$ cache/$3.html [L]