Htaccess没有使用两个斜杠

时间:2015-08-21 21:34:49

标签: php html .htaccess

我尝试制作一个自定义链接:

mysite.com/users/test

我的.htaccess文件中有以下代码:

    Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([A-Za-z0-9\_\-]+)$ index.php?h=$1 [QSA,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([A-Za-z0-9\_\-]+)\/(.*)$ index.php?h=$1&p=$2 [QSA,L]

我的问题是:当一个“/ something”正在运行时,index.php正确加载但是使用“/ something / test”我得到了一个Uncaught SyntaxError:意外的令牌<。

三江源。

1 个答案:

答案 0 :(得分:1)

我认为" \/"以下是不正确的。

RewriteRule ^([A-Za-z0-9\_\-]+)\/(.*)$ index.php?h=$1&p=$2 [QSA,L]

我认为应该是: RewriteRule ^([A-Za-z0-9\_\-]+)/(.*)$ index.php?h=$1&p=$2 [QSA,L]

您的定义需要注意的一点是,没有指定RewriteBase指令,index.php部分通常会以前导斜杠开头 - 这导致:​​

Options +FollowSymlinks
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([A-Za-z0-9\_\-]+)$ /index.php?h=$1 [QSA,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([A-Za-z0-9\_\-]+)/(.*)(/?)$ /index.php?h=$1&p=$2 [QSA,L]

使用显示以下GET变量的网址https://localhost/something/somethingelse/blahblah/?page=1对此进行了测试: -

Array
(
    [h] => something
    [p] => somethingelse/blahblah
    [page] => 1
)