Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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
Regex .htaccess replace"/&引用;加上_&引用;_Regex_.htaccess - Fatal编程技术网

Regex .htaccess replace"/&引用;加上_&引用;

Regex .htaccess replace"/&引用;加上_&引用;,regex,.htaccess,Regex,.htaccess,这是我当前的访问权限 <IfModule mod_rewrite.c> # turn on rewrite engine RewriteEngine on # if request is a directory, make sure it ends with a slash RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^(.*/[^/]+)$ $1/ # if not rewritt

这是我当前的访问权限

<IfModule mod_rewrite.c>
    # turn on rewrite engine
    RewriteEngine on

    # if request is a directory, make sure it ends with a slash
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^(.*/[^/]+)$ $1/

    # if not rewritten before, AND requested file is wikka.php
    # turn request into a query for a default (unspecified) page
    RewriteCond %{QUERY_STRING} !wakka=
    RewriteCond %{REQUEST_FILENAME} wikka.php
    RewriteRule ^(.*)$ wikka.php?wakka= [QSA,L]

    # if not rewritten before, AND requested file is a page name
    # turn request into a query for that page name for wikka.php
    RewriteRule ^(.*)$ wikka.php?wakka=$1 [QSA,L]

</IfModule>
怎么可能像这样访问它们

www.domain.com/site/pool/Page/Example/Test
www.domain.com/site/pool/Page/Example/Test/edit
www.domain.com/site/pool/Page/Example/Test/edit?id=1
www.domain.com/site/pool/Page/Example/Test/history
www.domain.com/site/pool/Page/Number/Room
www.domain.com/site/pool/Page/Number/Room/edit
让htaccess仅更改“\”的“/”项
只有/history和/edit完成url名称,正常情况下没有/edit或/history。

如果页面名称中有一到五个部分,例如

Page
Page/Page
Page/Page/Page
Page/Page/Page/Page
Page/Page/Page/Page/Page
每个元素都以大写字母开头,url的其他部分都是小写的,然后您可以通过四个替换来完成这一点(只有一个元素不需要替换)。例如,对于三件:

  • 查找内容:
    ([A-Z][A-Z]+)\/([A-Z][A-Z]+)\/([A-Z][A-Z]+)(\/)?
  • 替换为:
    $1\u$2\u$3$4
你可以试试看(虽然我不明白为什么每一行都用空格代替,但最后一行除外)

注:

  • 每个部分
    (…)
    都是
  • 最后一个斜杠
    \/?
    是,并且是潜在的“编辑”或“历史”之前的斜杠
  • 在某些正则表达式风格中,不需要斜杠
    /
    ,但这样做更安全:
    \/
  • 每个
    $[number]
    都是一个
  • 警告!这些更换必须从最长到最短:五件,四件,三件,两件。否则,你会把事情搞得一团糟


此答案中的所有链接都来自。请考虑书签以备将来参考。特别是,请参见底部的在线正则表达式测试程序列表,这样您就可以自己尝试了。

将此代码放入
/site/pool/.htaccess

RewriteEngine On
RewriteBase /site/pool/

RewriteRule "^(Page)/([^/]+)/([^/]+/.*)$" /$1/$2_$3 [L]
RewriteRule "^(Page)/([^/]+)/([^/]+)$" /$1/$2_$3 [L]

除了页面名称外,所有内容都是小写的吗?你想让我们为你写正则表达式吗?可以是的,只有页面名称有第一个大写字母leter。页面名称中总是有三个部分吗?可能吗?我试过使用regex,但仍然不走运,如果能提供一些指导,我将不胜感激。如果没有帮助,我将继续寻找解决方案,就像我已经做了几天了。。。
RewriteEngine On
RewriteBase /site/pool/

RewriteRule "^(Page)/([^/]+)/([^/]+/.*)$" /$1/$2_$3 [L]
RewriteRule "^(Page)/([^/]+)/([^/]+)$" /$1/$2_$3 [L]