2017-04-08 54 views
1

我想有每当用户键入一个“未找到”的链接(使用WAMP服务器)在我的服务器重定向到某个目录与子目录什么用户原来录入。将Web服务器上的“未找到”链接重定向到子目录所在的目录,作为用户试图通过.htaccess访问的目录?

我的意思是说,如果用户想要访问smiskol.com/hello,并且它不存在,那么页面会被重定向到smiskol.com/specific-page/hello,用户试图访问的页面会附加到末尾。

我不能为我的生命数字出来,因为我是新来的.htaccess的语法。到目前为止,我有以下,但它不起作用:

Options -Indexes 

Redirect 302 /drop /file-drop 

RewriteEngine on 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule^/short-links/%1 [L] 

谢谢!

回答

1

在你的最后一行,用这个来代替:

RewriteRule ^/?(.*)$ /short-links/$1 [L] 
+0

当我用这个,我得到了内部服务器错误 –

+0

什么是Apache的* erro_log *要说的就是500错误? –

+0

等一下,我用一个不存在的URL测试它,它确实有效,对不起!但是是否可以这样做:如果短链接目录中不存在该URL也不会尝试这样做并最终导致内部服务器错误? –

1

感谢@Eduardo埃斯科瓦尔和一些额外的时间,我终于想出了一个好办法!

这是我用过的最终代码:

RewriteEngine on 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{DOCUMENT_ROOT}/short-links/$1.php -f 
RewriteRule ^(.*)$ /short-links/$1 [L] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{DOCUMENT_ROOT}/short-links/$1.php !-f 
RewriteRule ^(.*)$ /index.php [L] 

第一小盘重定向到/short-links/hello如果存在于short-links目录hello.php如果页面本身不存在的,而第二个将用户重定向回如果页面不存在并且短链接不存在,则将其添加到索引页面。中提琴!

+0

而不是明确的硬编码服务器的路径(大概是文件系统路径文档根目录,你可以使用像'%{DOCUMENT_ROOT}服务器变量/短链接/ $ 1.php'。 – MrWhite

+0

我想沿着这些线路的东西,但它没有工作,但这似乎有效,谢谢! –

相关问题