Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.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
.htaccess mod“重写添加”/&引用;到url的末尾_.htaccess_Mod Rewrite - Fatal编程技术网

.htaccess mod“重写添加”/&引用;到url的末尾

.htaccess mod“重写添加”/&引用;到url的末尾,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,这是我的.htaccess代码: RewriteBase /kajak/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^moduli/([^/]+)/(.*)$ moduli/$1/index.php/$2 [L] 现在,/被附加到每个URL。例如,http://127.0.0.1/moduli/novice变为http://127.0.0.1/moduli/novice

这是我的.htaccess代码:

RewriteBase /kajak/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^moduli/([^/]+)/(.*)$ moduli/$1/index.php/$2 [L]
现在,
/
被附加到每个URL。例如,
http://127.0.0.1/moduli/novice
变为
http://127.0.0.1/moduli/novice/


我怎样才能避免在最后得到
/

虽然我不知道你的问题的答案,但我会注意到你的问题和你的代码有两个奇怪之处,它们可能与手头的问题有关

  • 使用代码中的RewriteBase,这些规则甚至不应该被触发

  • 虽然我自己对regex还不熟悉,但我看了一下([^/]+),对为什么要捕获它感到有点困惑。我知道^匹配字符串的开头,这永远不会是真的,因为在字符串的真正开头已经有了另一个

  • 话虽如此,我可能会编写如下代码:

    RewriteBase /moduli/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/(.*)$ $1/index.php/$2 [L]
    
    http://www.website.com/moduli/novice/view
    http://www.website.com/moduli/novice/index.php/view
    
    这将重写URL,如下所示:

    RewriteBase /moduli/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/(.*)$ $1/index.php/$2 [L]
    
    http://www.website.com/moduli/novice/view
    http://www.website.com/moduli/novice/index.php/view
    

    根据您的代码块,这似乎是您正在尝试做的事情。如果不是,那么我很抱歉。

    我认为这与您的重写规则无关(它不匹配)

    添加/是因为当您请求
    http://example.com/xx/zz
    并且web服务器检测到
    zz
    是一个目录,它将其转换为
    http://example.com/xx/zz/
    通过301重定向(浏览器发出另一个请求-检查apache日志)

    阅读有关尾部斜杠重定向的内容

    您必须自己确认,当请求的url为
    http://127.0.0.1/moduli/novice/
    (是否希望重定向捕获它?由于
    RewriteCond%{REQUEST\u FILENAME}!-d,当前未捕获它)


    顺便说一句,我不太明白你的
    RewriteBase/kajak/
    行-你确定它是正确的吗?

    谢谢你的回答。您的代码更好,工作也很好,但也有同样的问题。仍然在url末尾添加“/”广告。不客气。如果我的答案是你问题的答案,请标记是这样。这是正确的,因为文件夹是kajak。但我改变了cbroughton建议的代码。是的,我希望通过重定向缓存。请以更深思熟虑的方式解释您想做什么(也许可以扩展您的RewriteBase是/kajak/而/kajak/在示例URL中不存在的方式),或者选择下面的答案作为您问题的答案。