![](/img/trans.png)
[英].htaccess RewriteRule for one IP only (with regex subfolder)
[英]Rewriterule .htaccess in subfolder
我需要使用 .htaccess 文件在子文件夹中执行重写。 当前 url 的形式如下:
domain.com/subfolder/chapter.php?urlkey=name
需要改写为:
domain.com/subfolder/chapter/name
在子文件夹中,我有一个带有以下代码的 .htaccess 文件:
<IfModule mod_rewrite.c>
Options -Indexes
RewriteEngine On
RewriteBase /subfolder/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^chapter/([a-z0-9]+)/?$ chapter.php?urlkey=$1 [L,NC,QSA]
</IfModule>
Modrewrite 已启用,但出于某种原因,当我转到 url 时
domain.com/subfolder/chapter/name
它返回以下错误:
Notice: Undefined index: urlkey
在subfolder/.htaccess
有此代码:
Options -MultiViews
RewriteEngine On
RewriteBase /subfolder/
RewriteRule ^chapter/([\w-]+)/?$ chapter.php?urlkey=$1 [L,NC,QSA]
选项MultiViews
(参见http://httpd.apache.org/docs/2.4/content-negotiation.html )由Apache's content negotiation module
,该Apache's content negotiation module
在mod_rewrite
之前运行并使 Apache 服务器匹配文件的扩展名。 因此,如果/file
是 URL,则 Apache 将提供/file.html
。
也不需要改写成chapter?...
可以改写成chapter.php?...
您的错误与 htaccess 规则无关。
注意:未定义索引
当您尝试通过数组中不存在的键访问数组时发生。
Undefined Index
通知的典型示例是检查下面的示例代码。
$data = array('foo' => '42', 'bar');
echo $data['spinach'];
echo $data[1];
spinach
和1
都不存在于数组中,导致触发 an。
解决方案是在访问该索引之前确保该索引或偏移量存在。 这可能意味着您需要修复程序中的错误,以确保这些索引确实在您期望的时候存在。 或者这可能意味着您需要使用array_key_exists
或isset
测试索引是否存在:
$data = array('foo' => '42', 'bar');
if (array_key_exists('spinach', $data)) {
echo $data['spinach'];
}
else {
echo 'No key spinach in array';
}
如果你有这样的代码:
<?php echo $_POST['message']; ?>
<form method="post" action="">
<input type="text" name="message">
...
那么$_POST['message']
在这个页面第一次加载时不会被设置,你会得到上面的错误。 只有在提交表单并且第二次运行此代码时,数组索引才会存在。 您通常通过以下方式检查:
if ($_POST) .. // if the $_POST array is not empty
// or
if ($_SERVER['REQUEST_METHOD'] == 'POST') .. // page was requested with POST
当使用 $_POST、$_GET 或 $_SESSION 时,上面的通知经常出现。 对于 $_POST 和 $_GET 你只需要在使用它们之前检查索引是否存在。 对于 $_SESSION,您必须确保会话以 session_start() 开始并且索引也存在。
删除RewriteBase
它对我RewriteBase
把它放在子文件夹中,请检查
Options -Indexes
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^chapter/([a-z0-9]+)/?$ chapter.php?url=$1 [L,NC,QSA]
你必须添加chapter.php?
而不是chapter?
.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.