我的htaccess文件有以下代码:
RewriteCond %{REQUEST_URI} !^/admin/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !/admin
RewriteCond %{REQUEST_URI} !\.(?:jpe?g|gif|bmp|png|tiff|css|js)$ [NC]
RewriteRule ^(.*)$ /index.php [L]
我知道编码但对正则表达式并不好,我之前没有使用过htaccess文件。 我找到了this answer和this one但是他们没有达到我的要求。
我使用目录名作为permlinks。例如,如果用户输入www.mydomaincom/about
,则JavaScript代码将提取目录名称,与数据库进行比较并轮询页面。当地址用www.mydomaincom/about/
之类的尾部斜杠编写时,它也有效。但这种表示法存在问题。
奇怪的是,页面正在尝试从index.php读取html数据,这是AOK。但是......需要源代码如<img>, <style>, <script>
或需要源目录的样式属性的元素正试图从about/
目录中寻找源代码,就好像它存在一样。
我正在搜索一个htaccess解决方案,它会使www.mydomaincom/about/
符号与www.mydomaincom/about
的行为相同,而不会影响源属性或属性。
答案 0 :(得分:1)
您的代码中有太多行:
RewriteCond %{REQUEST_URI} !^/admin/
RewriteCond %{REQUEST_URI} !/admin
这些看上去做同样的事情,但他们不这样做
第一个是&#34;如果不开始(^
)/admin
&#34;
第二个是&#34;如果它实际上不 /admin
&#34;
两者都不是你想要的:
RewriteCond %{REQUEST_URI} !^/admin
这样做&#34;如果它不以/admin
&#34;开头。这还包括/admin/
,因为它以/admin
第二个奇怪的组合就是:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\.(?:jpe?g|gif|bmp|png|tiff|css|js)$ [NC]
第一个是&#34;如果不是文件&#34;
你做的第二个&#34;如果它不一个css,js,png等&#34;
最后一行是不需要的,因为文件类型是文件,所以你检查两次相同的东西。
第三,您可能希望将url传递给index.php。 Shortend并将其传递给index.php如下所示:
RewriteCond %{REQUEST_URI} !^/admin
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?url=$1 [L]