Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 重写cond%{REQUEST_FILENAME}all_Apache_.htaccess_Mod Rewrite - Fatal编程技术网

Apache 重写cond%{REQUEST_FILENAME}all

Apache 重写cond%{REQUEST_FILENAME}all,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,一个非常简单的问题,但仍然找不到任何答案 我需要所有情况下的重写条件。我不在乎目录、文件或其中任何一个是否存在。直接进入重写规则 以下是我所拥有的: Options -Indexes RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-l RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] 该规则仅适用于不存在的文件。但是我想得到用

一个非常简单的问题,但仍然找不到任何答案

我需要所有情况下的重写条件。我不在乎目录、文件或其中任何一个是否存在。直接进入重写规则

以下是我所拥有的:

Options -Indexes
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l 

RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
该规则仅适用于不存在的文件。但是我想得到用户输入的任何内容,因为url字符串是用php处理的,php决定如何处理它

编辑=============================================================================

这个问题得到了回答,但事实证明这不是我所需要的。因此,这里有一个新的修正问题:

整个网站在Ajax上运行。也就是说,只有一个index.php文件,其中包含网站的框架。每隔一个页面/内容都会通过Ajax加载。因此,有一个名为“pages”的文件夹,其中包含加载到index.php中的所有内容php文件。 要使该系统正常工作,我需要:

  • 捕获用户通过.htaccess在url中输入的输入
  • 将输入字符串传递给php,php尝试理解用户想要去哪里,并将地址传递给javascript
  • javascript使用ajax加载内容
  • 一些代码:

    .htaccess-见上文

    php:

    阿贾克斯: 这是一个大文件,所以我不想在这里发送垃圾邮件,但它基本上需要$pass,并使用它执行一些ajax加载函数

    这里是一个陷阱: 当用户想要访问ex:download页面时,他输入 “(网站)/下载”。由于此目录中不存在此特定文件,.htaccess将“下载”传递给php,php将检查pages文件夹中是否有download.php,并且由于这是真的,它将“下载”传递给Ajax。Ajax从index.php内部的pages/download.php加载。应该是这样的。 但是,如果用户输入“(站点)/页面/下载”怎么办。htaccess注意到这个文件存在于这个目录中,并且没有向php传递任何参数,这会破坏一切

    我需要的是: 我需要以某种方式操纵url请求,不允许直接访问/pages/,而是在ajax调用它时允许访问

    如果您需要更多详细信息或显式代码,以下是GitHub存储库:

    您可以使用此基于负面前瞻的规则:

    Options -Indexes
    RewriteEngine on
    
    RewriteRule ^((?!index\.php$).*)$ index.php?url=$1 [QSA,L,NC]
    

    这里的
    (?!index\.php$)
    是一个消极的前瞻,如果请求URI是
    index.php

    ,它将阻止重写规则的执行,感谢您的快速响应。看起来这正是我所需要的,但该站点出现了8条错误消息:[资源被解释为样式表,但使用MIME类型text/html传输:“有什么想法吗?是的,这是因为
    style.css
    也被重写为
    index.php
    。这是因为您删除了
    RewriteCond%{REQUEST\u FILENAME}!-f
    防止重写真实文件的条件。PS:这实际上会影响资源的加载方式吗?因为style.css和javascripts都没有显示..啊,好的,我明白了…嗯..那么我需要一种方法,允许加载所有内容而不重写,除了存储在名为pages的文件夹中的内容…好的,可以吗按照相同的规则执行。是否只有
    /pages/
    文件夹不想重写?
    Options -Indexes
    RewriteEngine on
    
    RewriteRule ^((?!index\.php$).*)$ index.php?url=$1 [QSA,L,NC]