2009-09-05 3 views
1

Я хочу сделать URL Rewrite в Tomcat с помощью UrlRewriteFilter Это правило хотели бы в mod_rewrite,UrlRewriteFilter эквивалент mod_rewrite

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

Я запутался в том, чтобы проверить запрос файла, если это не файл или не папка в UrlRewriteFilter

Может кто-нибудь мне помочь?

ответ

0

Вы не можете. Ну, вы можете, если используете версию UrlRewriteFilter 3.2, и вы напишете свой собственный class-rule, чтобы проверить его; но это не совсем то, для чего был разработан UrlRewriteFilter.

Это определенно относится к mod_rewrite от Apache, особенно учитывая, что у вас есть index.php в вашем примере. Почему этот запрос будет даже отправлен/обслуживаться Tomcat?

+0

Здравствуйте, Да, посмотрев на правило index.php, может показаться странным, что он обслуживается Tomcat. На самом деле моя программа написана на php. И я использую PHP Java Bridge для запуска его на Tomcat. И да, это работает очень хорошо, за исключением случаев, когда мне нужно Url Rewrite В Apache правило легко писать. Хорошо, потому что по тому, что вы сказали, я могу, если я напишу свой собственный пользовательский класс, я попытаюсь исследовать этот вопрос. PS: Я запускаю php для Tomcat, потому что я хотел использовать Jasper Reports для своего приложения php Если вы знаете, как интегрировать Jasper Отправляется в другую сторону. Пожалуйста, будьте любезны, чтобы сообщить мне –

+1

Эрвин. Я предлагаю вам изучить запущенный Apache перед Tomcat. Попросите приложение PHP запустить в Apache и использовать обычный mod_rewrite (гораздо проще и, скорее всего, быстрее, чем в Tomcat) и запустить Jasper в Tomcat. Затем вы можете вызывать отчеты Jasper через локальный URI с необходимыми параметрами. Взгляните на http://tomcat.apache.org/connectors-doc/webserver_howto/apache.html о том, как запустить Apache с Tomcat; вы также можете сделать это через mod_proxy. Google (http://www.google.com/search?q=run+apache+with+tomcat) имеет немало результатов. – ChssPly76

0

Собственно, вам не о чем беспокоиться. Модуль mod_rerwite от Apache позаботится об этом для вас. Попробуйте. Если вы попытаетесь получить доступ к папке или файлу на сервере, он откроет ее, иначе она применит RewriteRule, который у вас есть.

+0

Да он работал на Apache, но в настоящее время я пытаюсь заставить его работать на Tomcat. Поэтому его нужно будет преобразовать в условие UrlRewriteFilter. Благодарим вас за ответ –

0

Это работало для меня

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN" 
     "http://www.tuckey.org/res/dtds/urlrewrite4.0.dtd"> 
<urlrewrite> 
    <rule> 
     <note> 
      Fitler for checking if file exists. 
     </note> 
     <condition type="request-filename" operator="notfile" next="and" /> 
     <condition type="request-filename" operator="notdir" /> 
     <from>(.*)</from> 
     <to type="redirect" last="true">index.php/$1</to> 
    </rule> 
</urlrewrite> 
Смежные вопросы