htaccess-mod_rewrite是否将虚拟目录或文件作为参数传递回index.php?
我正在尝试获取一个虚拟目录或文件,以便传回index.php 例如,我希望将/之后的所有内容传递回索引,然后根据数据库检查索引,但“virtual_directory”和“virtual_file.jpg”实际上并不存在,它们只是参数htaccess-mod_rewrite是否将虚拟目录或文件作为参数传递回index.php?,php,.htaccess,mod-rewrite,url-parameters,Php,.htaccess,Mod Rewrite,Url Parameters,我正在尝试获取一个虚拟目录或文件,以便传回index.php 例如,我希望将/之后的所有内容传递回索引,然后根据数据库检查索引,但“virtual_directory”和“virtual_file.jpg”实际上并不存在,它们只是参数 somedomain.com/virtual_directory somedomain.com/virtual_file.jpg 现在,问题是一切都过去了。假设我只想转到主目录(或index.php),我会输入url(somedomain.com),它会将尾部的
somedomain.com/virtual_directory
somedomain.com/virtual_file.jpg
现在,问题是一切都过去了。假设我只想转到主目录(或index.php),我会输入url(somedomain.com),它会将尾部的斜杠作为参数传递。如果我尝试访问somedomain.com/index.php,也是一样的。它将通过/index.php(即:我无法访问else语句)
有没有办法使它不会通过,如果我直接去索引
这两个将作为参数传递,我不希望它们也传递
somedomain.com/
somedomain.com/index.php
.htaccess:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /index.php [L]
php将读取“/”后面的内容并对其进行处理
if ($_SERVER['REQUEST_URI']) {
echo nl2br("Parameter Passed!\n");
echo 'Parameter That Passed:' .$_SERVER['REQUEST_URI'];
} else{
echo 'No Parameter Passed';
echo 'You Are Visiting domain.com/ or domain.com/index.php';
}
你可以试试这个
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
RewriteRule ^(.*)/$ /$1 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
选项-多视图
重新启动发动机
重写规则^(.*)/$/$1[L,R=301]
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
重写规则^index.php[L]
php代码中的“else”部分无法访问的原因是始终会有一个$\u服务器['REQUEST\u URI']
值。这是一个始终作为请求的服务器变量。因此,您永远不会得到“未传递参数”。如果要将参数作为GET变量或路径信息传递,您可能需要:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?request=$1 [L]
您的代码是:
if ($_GET['request']) {
echo nl2br("Parameter Passed!\n");
echo 'Parameter That Passed:' .$_GET['request'];
} else{
echo 'No Parameter Passed';
echo 'You Are Visiting domain.com/ or domain.com/index.php';
}
if ($_SERVER['PATH_INFO']) {
echo nl2br("Parameter Passed!\n");
echo 'Parameter That Passed:' .$_SERVER['PATH_INFO'];
} else{
echo 'No Parameter Passed';
echo 'You Are Visiting domain.com/ or domain.com/index.php';
}
或路径信息:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
您的代码是:
if ($_GET['request']) {
echo nl2br("Parameter Passed!\n");
echo 'Parameter That Passed:' .$_GET['request'];
} else{
echo 'No Parameter Passed';
echo 'You Are Visiting domain.com/ or domain.com/index.php';
}
if ($_SERVER['PATH_INFO']) {
echo nl2br("Parameter Passed!\n");
echo 'Parameter That Passed:' .$_SERVER['PATH_INFO'];
} else{
echo 'No Parameter Passed';
echo 'You Are Visiting domain.com/ or domain.com/index.php';
}
那么问题出在哪里?添加了一个问题。我不知怎么忘了加上它。12shadow12的用词很有趣。。。我只是来写“美丽的答案”。干得好,林琼恩,非常感谢!